• C# 对XML的 创建、查询


    假设一个xml文件内容如下:

    <?xml version="1.0" encoding="UTF-8"?> 
    <Persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.xxx.com/XxxSystem"> 
      <Person id="1"> 
        <Name>张三</Name> 
        <Age>18</Age> 
      </Person> 
      <Person id="2"> 
        <Name>李四</Name> 
        <Age>20</Age> 
      </Person> 
    </Persons>  

    创建xml代码如下:

    private void button1_Click(object sender, EventArgs e) 
           { 
               XmlDocument doc = new XmlDocument(); 
               XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "UTF-8", null); 
               doc.AppendChild(dec); 
               //根节点 
               XmlElement root = doc.CreateElement("Persons"); 
               doc.AppendChild(root); 
               root.AddEleAttr(doc, "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); 
               root.AddEleAttr(doc, "xmlns", "http://www.xxx.com/XxxSystem"); 
               //根节点的每个独立子节点 
               XmlElement body = doc.CreateElement("Person"); 
               body.AddEleAttr(doc, "id", "1");    
               body.AddChildNode(doc, "Name", "张三"); 
               body.AddChildNode(doc, "Age", "18");     
               root.AppendChild(body); 
       
               //根节点的每个独立子节点 
               body = doc.CreateElement("Person"); 
               body.AddEleAttr(doc, "id", "2"); 
               body.AddChildNode(doc, "Name", "李四"); 
               body.AddChildNode(doc, "Age", "20");            
               root.AppendChild(body); 
       
               doc.Save("person.xml"); 
           }  

    查询id=2时的姓名和年龄

    private void button2_Click(object sender, EventArgs e) 
           { 
                XmlDocument doc = new XmlDocument(); 
                using (StreamReader sr = new StreamReader("person.xml", Encoding.UTF8)) 
                { 
                    doc.Load(sr); 
                    XmlNamespaceManager nsMgr = new XmlNamespaceManager(doc.NameTable); 
                    nsMgr.AddNamespace("ns", "http://www.xxx.com/XxxSystem"); 
                    XmlNodeList nodes = doc.SelectNodes("//ns:Person[@id=2]", nsMgr); 
                    foreach (XmlNode item in nodes) 
                    { 
                        string name = item.SelectSingleNode("//ns:Name", nsMgr).InnerText; 
                        string age = item.SelectSingleNode("//ns:Age", nsMgr).InnerText; 
                        MessageBox.Show(string.Format("{0}:{1}", name, age)); 
                    } 
                } 
           }   

    注:上面创建xml用到的两个扩展方法如下:

    /// <summary> 
    /// XML元素添加属性 
    /// </summary> 
    public static void AddEleAttr(this XmlElement src, XmlDocument doc, string name, string value) 
    { 
        XmlAttribute attr = doc.CreateAttribute(name); 
        attr.Value = value; 
        src.Attributes.Append(attr); 
    } 
    /// <summary> 
    /// XML元素添加子节点 
    /// </summary> 
    public static void AddChildNode(this XmlElement src, XmlDocument doc, string name, string innerText) 
    { 
        XmlElement elem = doc.CreateElement(name); 
        elem.InnerText = innerText; 
        src.AppendChild(elem); 
    }  

    --------------------------------------

    欢迎您,进入 我系程序猿 的cnBlog博客。

    你不能改变你的过去,但你可以让你的未来变得更美好。一旦时间浪费了,生命就浪费了。

    You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.

    --------------------------------------

    分享到QQ空间  

  • 相关阅读:
    emlog6.0代码审计
    Linux系统
    PHP反序列化链挖掘
    Yii框架反序列化RCE利用链分析
    CVE-2020-1472漏洞复现
    linux 报错 Input/output error
    SKimage
    layui 统计行totalRow 保留两位小数
    linux清空历史命令(history)
    shred 命令详解
  • 原文地址:https://www.cnblogs.com/jqmtony/p/2910912.html
Copyright © 2020-2023  润新知