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);  
    }  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值