Xml的读取方法

C#中可以用XmlDocument类操作Xml文件

Xml文件格式较多,一种为较复杂的 在<> 中添加元素数据的,一种为在<></>中添加元素数据的

<?xml version="1.0" encoding="utf-8" ?>
<root>
  <person name="WangYao">
    <age>25</age>
  </person>
  <person name="Jobs">
    <age>56</age>
  </person>
</root>

C#控制台中读取

XmlDocument doc = new XmlDocument();
            doc.Load(Environment.CurrentDirectory+"\\Test.xml");
            XmlElement rootElem = doc.DocumentElement;
            XmlNodeList personNodes = rootElem.GetElementsByTagName("person");
            foreach (XmlNode node in personNodes)
            {
                string strName = ((XmlElement)node).GetAttribute("name");   //获取name属性值 
                Console.WriteLine(strName);
                XmlNodeList subAgeNodes = ((XmlElement)node).GetElementsByTagName("age");  //获取age子XmlElement集合  
                if (subAgeNodes.Count == 1)
                {
                    string strAge = subAgeNodes[0].InnerText;
                    Console.WriteLine(strAge);
                }
            }     
            Console.ReadKey();
XmlElement 类中有GetElementsByTagName(string name)函数可以访问所有与name参数匹配的节点元素集合,返回的是XmlNodeList类型,由于XmlNodeList继承IEnumerable接口,所以可以用foreach遍历
在此程序中  rootElem.GetElementsByTagName("person") 等价于 rootElem.ChildNodes
      ((XmlElement)node).GetAttribute("name") 等价于 node.Attributes["name"].Value
      ((XmlElement)node).GetElementsByTagName("age")[0].InnerText 等价于 node.ChildNodes[0].InnerText
XmlNode没有获取元素集合的GetAttribute方法所以强转换XmlElement类型
((XmlElement)node).GetAttribute("name")和node.Attributes["name"].Value获取<person name="WangYao"> 中制定名称的特定的值。如果匹配到返回string类型变量。
GetElementsByTagName返回XmlElement集合。匹配到有1个结果则Count为1。
((XmlElement)node).GetElementsByTagName("age")[0].InnerText和node.ChildNodes[0].InnerText获取<age>25</age>中age元素的值


Environment.CurrentDirectory获取和设置当前目录该进程从中启动的目录的完全限定目录。获取的路径为当前项目的bin/debug目录

//((XmlElement)node).GetAttribute("name") 等价于 node.Attributes["name"].Value

原文地址:https://www.cnblogs.com/leeafei/p/4741380.html