zoukankan      html  css  js  c++  java
  • c#读取xml操作

    1/定义一个XmlDocument对象xDoc
    2/通过XmlDocument来load需要读取的xml文件
    3/通过XmlDocument的SelectSingleNode来找到节点,并把节点转换为XmlElement
    4/XmlElement 可以对节点的属性进行操作

    <?xml version="." encoding="gb"?>
      <bookstore>
      <book genre="fantasy" ISBN="--">
      <title>Oberon's Legacy</title>
      <author>Corets, Eva</author>
    <price>.</price>
    </book>
    </bookstore>
     
     
     
     
     
    1、往<bookstore>节点中插入一个<book>节点:
    XmlDocument xmlDoc=new XmlDocument();
    xmlDoc.Load("bookstore.xml");
    XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore>

    XmlElement xe=xmlDoc.CreateElement("book");//创建一个<book>节点
    xe.SetAttribute("genre","李小龙");//设置该节点genre属性
    xe.SetAttribute("ISBN","--");//设置该节点ISBN属性
     
    XmlElement xesub=xmlDoc.CreateElement("title");
    xesub.InnerText="CS从入门到精通";//设置文本节点
    xe.AppendChild(xesub);//添加到<book>节点中
    XmlElement xesub=xmlDoc.CreateElement("author");
    xesub.InnerText="候捷";
    xe.AppendChild(xesub);
    XmlElement xesub=xmlDoc.CreateElement("price");
    xesub.InnerText=".";
    xe.AppendChild(xesub);
     
    root.AppendChild(xe);//添加到<bookstore>节点中
    xmlDoc.Save("bookstore.xml");
     
     
    //================
    结果为:
     
     
     
     
    <?xml version="." encoding="gb"?>
    <bookstore>
    <book genre="fantasy" ISBN="--">
    <title>Oberon's Legacy</title>
    <author>Corets, Eva</author>
    <price>.</price>
    </book>
    <book genre="李小龙" ISBN="--">
    <title>CS从入门到精通</title>
    <author>候捷</author>
    <price>.</price>
    </book>
    </bookstore>
     
     
     
     
     
    2、修改节点:将genre属性值为“李小龙“的节点的genre值改为“update李小龙”,将该节点的子节点<author>的文本修改为“亚胜”。
     
     
    XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点
    foreach(XmlNode xn in nodeList)//遍历所有子节点
    {
    XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
    if(xe.GetAttribute("genre")=="李小龙")//如果genre属性值为“李赞红”
    {
    xe.SetAttribute("genre","update李小龙");//则修改该属性为“update李赞红”
     
    XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
    foreach(XmlNode xn in nls)//遍历
    {
    XmlElement xe=(XmlElement)xn;//转换类型
    if(xe.Name=="author")//如果找到
    {
    xe.InnerText="亚胜";//则修改
    break;//找到退出来就可以了
    }
    }
    break;
    }
    }
     
    xmlDoc.Save("bookstore.xml");//保存。
     
     
     

    //=================

    最后结果为:


    <?xml version="." encoding="gb"?>
    <bookstore>
    <book genre="fantasy" ISBN="--">
    <title>Oberon's Legacy</title>
    <author>Corets, Eva</author>
    <price>.</price>
    </book>
    <book genre="update李小龙" ISBN="--">
    <title>CS从入门到精通</title>
    <author>亚胜</author>
    <price>.</price>
    </book>
    </bookstore>


    3、删除 <book genre="fantasy" ISBN="--">节点的genre属性,删除 <book genre="update李赞红" ISBN="--">节点。


    XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes;

    foreach(XmlNode xn in xnl)
    {
    XmlElement xe=(XmlElement)xn;


    if(xe.GetAttribute("genre")=="fantasy")
    {
    xe.RemoveAttribute("genre");//删除genre属性
    }
    else if(xe.GetAttribute("genre")=="update李小龙")
    {
    xe.RemoveAll();//删除该节点的全部内容
    }
    }
    xmlDoc.Save("bookstore.xml");

    //====================

    最后结果为:


    <?xml version="." encoding="gb"?>
    <bookstore>
    <book ISBN="--">
    <title>Oberon's Legacy</title>
    <author>Corets, Eva</author>
    <price>.</price>
    </book>
    <book>
    </book>
    </bookstore>


    4、显示所有数据。


    XmlNode xn=xmlDoc.SelectSingleNode("bookstore");

    XmlNodeList xnl=xn.ChildNodes;

    foreach(XmlNode xnf in xnl)
    {
    XmlElement xe=(XmlElement)xnf;
    Console.WriteLine(xe.GetAttribute("genre"));//显示属性值
    Console.WriteLine(xe.GetAttribute("ISBN"));

    XmlNodeList xnff=xe.ChildNodes;
    foreach(XmlNode xn in xnff)
    {
    Console.WriteLine(xn.InnerText);//显示子节点点文本
    }
    }

    转载请注明文章来自:程序猴(http://www.chengxuhou.com/)
  • 相关阅读:
    archlinux .bash_history
    Ubuntu环境下挂载新硬盘
    软碟通 UltraISO U启替代品 Win32DiskImager 无设备 无盘符 无u盘 无优盘 解决方案 之diskpart
    delphi Integer overflow
    MSBuild Tools offline
    delphi synedit免费的拼写检查器dll
    git 自定义命令行
    lua编译
    gcc ar
    Windows Subsystem for Linux (WSL)挂载移动硬盘U盘 卸载 c d 盘
  • 原文地址:https://www.cnblogs.com/minotmin/p/3250893.html
Copyright © 2011-2022 走看看