基于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");
}
浙公网安备 33010602011771号