C# 对XML基本操作包括读取节点的数据,添加节点。读取节点属性,修改节点属性等。具体如下:
XML文件:文件在MyDocument文件夹下
<?xml version=
"1.0"
encoding=
"utf-8"
?>
<PersonF xmlns=
""
Name=
"(test)work hard work smart!"
>
<person Name=
"Person1"
>
<ID>1</ID>
<Name>XiaoA</Name>
<Age>59</Age>
</person>
<person Name=
"Person2"
>
<ID>2</ID>
<Name>XiaoB</Name>
<Age>29</Age>
</person>
<person Name=
"Person3"
>
<ID>3</ID>
<Name>XiaoC</Name>
<Age>103</Age>
</person>
<person Name=
"Person4"
>
<ID>4</ID>
<Name>XiaoD</Name>
<Age>59</Age>
</person>
</PersonF>
|
Code:说明都在注释里。
public
void
TestXML()
{
XmlDocument doc =
new
XmlDocument();
string
path =
"http://www.cnblogs.com/MyDocument/Person.xml"
;
try
{
//doc.Load(Server.MapPath()
doc.Load(path);
//1、读取单个节点的数据
XmlNode node = doc.SelectSingleNode(
"PersonF"
);
//2、读取多个节点的数据
XmlNodeList nodeList1 = doc.SelectNodes(
"PersonF/person"
);
//3.1 读取具体节点的具体值 如:属性为Person2的第二个节点Name的InnerText
XmlNodeList nodeList = doc.DocumentElement.GetElementsByTagName(
"person"
);
foreach
(XmlNode node2
in
nodeList1)
//当然也能用nodeList的值
{
if
(node2.Attributes[
"Name"
].InnerText ==
"Person2"
)
{
Console.WriteLine(node2.ChildNodes[1].InnerText);
}
}
//3.2 读取ID为2所在的节点第二个子节点Name的InnerText
XmlNode node3 = doc.SelectSingleNode(
"PersonF/person[ID=2]"
);
string
strNode3 = node3.ChildNodes[1].InnerText;
//3.3利用下面的方法可以找到ID为2的节点
XmlNodeList nodeList2 = doc.SelectNodes(
"//person//ID"
);
XmlNode node4 =
null
;
foreach
(XmlNode node5
in
nodeList2)
{
if
(node5.InnerText ==
"2"
)
{
node4 = node5;
break
;
}
}
Console.WriteLine(node4.InnerText);
//4、读取节点的属性
string
Name = node.Attributes[
"Name"
].InnerText;
//5 修改节点的属性
node.Attributes[
"Name"
].InnerText =
"work hard work smart!"
;
doc.Save(path);
//6 添加自定义的节点
XmlTextReader reader =
new
XmlTextReader(path);
XmlElement root = doc.DocumentElement;
//获取根节点
XmlElement tagOuter = doc.CreateElement(
"person"
);
//设置节点属性
tagOuter.SetAttribute(
"Name"
,
"Person5"
);
XmlElement tagIN_Name = doc.CreateElement(
"Name"
);
XmlElement tagIN_ID = doc.CreateElement(
"ID"
);
tagIN_Name.InnerText =
"work hard work smart!"
;
tagIN_ID.InnerText =
"32"
;
tagOuter.AppendChild(tagIN_Name);
tagOuter.AppendChild(tagIN_ID);
root.AppendChild(tagOuter);
//添加tagOuter到XML文件的最后
reader.Close();
doc.Save(path);
}
catch
(System.Exception e)
{
throw
new
Exception(e.Message);
}
}
|
C#操作xml SelectNodes,SelectSingleNode总是返回NULL 与 xPath 介绍
C#中用SelectSingleNode方法解析带有多个命名空间的XML文件
本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/archive/2011/10/10/2205896.html,如需转载请自行联系原作者