基于DOM的XML操作(读、写、修改、删除)

XML  文档:

<?xml version="1.0" encoding="utf-8"?>
<employees>
  <employee id="1">
    <name>
      <firstName>Jack</firstName>
      <lastName>Wang</lastName>
    </name>
    <city>BeiJing</city>
    <state>BeiJing</state>
    <zipCode>100061</zipCode>
  </employee>
  <employee id="2">
    <name>
      <firstName>DeHua</firstName>
      <lastName>Liu</lastName>
    </name>
    <city>Hongkong</city>
    <state>China</state>
    <zipCode>000061</zipCode>
  </employee>
  <employee id="3">
    <name>
      <firstname>tang</firstname>
      <lastname>zhixiang</lastname>
    </name>
    <city>wuxi</city>
    <state>ok</state>
    <zipCode>ooookkk</zipCode>
  </employee>
</employees>

操作:

  //读取XML文档
           XmlDocument xmlDoc = new XmlDocument();
           xmlDoc.Load("D:\\示例\\XMLTEST\\XMLFile.xml");
           XmlNodeList xno = xmlDoc.SelectSingleNode("employees").ChildNodes;
           foreach (XmlNode xn in xno)
           {
               XmlElement xe = (XmlElement)xn;
               this.mEmployeesLabel.Text += xe.GetAttribute("id");//获取属性值
               this.mEmployeesLabel.Text += xe.InnerText;//获取文本
               this.mEmployeesLabel.Text += "<br/>";
               XmlNodeList xno2 = xe.ChildNodes;
               foreach (XmlNode xn2 in xno2)
               {
                   XmlElement xe2 = (XmlElement)xn2;
                   if (xe.Name == "city")
                   {
                       this.mEmployeesLabel.Text += xe.InnerText;
                   }
               }
            
           }
        
            

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        //添加XML节点
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load("D:\\示例\\XMLTEST\\XMLFile.xml");
        XmlNode root = xmlDoc.SelectSingleNode("employees");
        XmlElement xe = xmlDoc.CreateElement("employee");//创建emplyoee节点
        XmlElement xename = xmlDoc.CreateElement("name");
        XmlElement xefirstname = xmlDoc.CreateElement("firstname");
        XmlElement xelastname = xmlDoc.CreateElement("lastname");
        XmlElement xecity = xmlDoc.CreateElement("city");
        XmlElement xestate = xmlDoc.CreateElement("state");
        XmlElement xezipCode = xmlDoc.CreateElement("zipCode");

        xefirstname.InnerText = "tang";
        xelastname.InnerText = "zhixiang";
        xecity.InnerText = "wuxi";
        xestate.InnerText = "ok";
        xezipCode.InnerText  = "ooookkk";
        xename.AppendChild(xefirstname);//将firstname节点添加到name节点
        xename.AppendChild(xelastname);
        xe.SetAttribute("id", "3"); //添加属性
        xe.AppendChild(xename);//将name节点追加到employee节点
        xe.AppendChild(xecity);
        xe.AppendChild(xestate);
        xe.AppendChild(xezipCode);
        root.AppendChild(xe);//将emplyoee添加到根节点
        xmlDoc.Save("XMLFile.xml");


    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load("D:\\示例\\XMLTEST\\XMLFile.xml");
        XmlNodeList nodelist = xmlDoc.SelectSingleNode("employees").ChildNodes;
        foreach (XmlNode xn in nodelist)
        {
            XmlElement xe = (XmlElement)xn;
            if (xe.GetAttribute("id") == "33")
            {
                xe.SetAttribute("id", "03");//修改属性
                XmlNodeList nls = xe.ChildNodes;   //继续获取xe子节点的所有子节点
                foreach (XmlNode xn1 in nls)  //遍历
                {
                    XmlElement xe2 = (XmlElement)xn1;//转换类型
                    if (xe2.Name == "state")
                    {
                        xe2.InnerText = "ok";//修改内容
                    }
                }
               
            }
           
        }
        xmlDoc.Save("XMLFile.xml");
    }
    protected void Button3_Click(object sender, EventArgs e)
    {
        //删除节点
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load("D:\\示例\\XMLTEST\\XMLFile.xml");
        XmlNode root = xmlDoc.SelectSingleNode("employees");//根节点
        XmlNodeList nodelist=root .ChildNodes; // 子节点
        foreach (XmlNode xn in nodelist)
        {
            if (xn.SelectSingleNode("city").InnerText == "wuxi")
                root.RemoveChild(xn);//移除子节点
          
        }
        xmlDoc.Save("XMLFile.xml");
    }

posted on 2011-04-26 13:21  缘来  阅读(507)  评论(0)    收藏  举报

导航