gdjlc

培养良好的习惯,每天一点一滴的进步,终将会有收获。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

假设一个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);  
    }  

 

posted on 2013-02-07 17:07  gdjlc  阅读(9298)  评论(0编辑  收藏  举报