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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM