<STUDENTS>
<STUDENT NO="1">
<BASIC>
<NAME>LOTUS</NAME>
<AGE>21</AGE>
</BASIC>
<DETAIL>
<ITEM>
<TEL>123465</TEL>
</ITEM>
<ITEM>
<HOMEPAGE>hi.baidu.com/lotusOxygen</HOMEPAGE>
</ITEM>
<ITEM>
<OTHER>THANKS</OTHER>
</ITEM>
</DETAIL>
</STUDENT>
<STUDENT NO="2">
<BASIC>
<NAME>FURONG</NAME>
<AGE>21</AGE>
</BASIC>
<DETAIL>
<ITEM>
<TEL>654321</TEL>
</ITEM>
<ITEM>
<HOMEPAGE>hi.baidu.com/lotusOxygen</HOMEPAGE>
</ITEM>
<ITEM>
<OTHER>THANKS (*^__^*) </OTHER>
</ITEM>
</DETAIL>
</STUDENT>
</STUDENTS>操作方式是根据student-no获取每一个值
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
namespace operatorstudentxml
{
class Program
{
static void Main(string[] args)
{
string targetValue = "1";//操作方式是根据student-no获取每一个值 targetValue就是student-no的值,这里手动赋值,可以是“1”和“2”,也可是是任意其它,只不过xml没有匹配的话,结果集为空。
string filePath = @"F:\student.xml";//xml 文件路径
XmlDocument doc = new XmlDocument();
doc.Load(filePath);//加载文件。以上三句雷打不动
string targetParm = string.Format("STUDENTS/STUDENT[@NO='{0}']", targetValue);//生成目标获取节点的参数
XmlNode targetNode = doc.SelectSingleNode(targetParm);//获得目标节点
if (targetNode == null)
Console.WriteLine("can not find");
else
traChildNodes(targetNode);//遍历目标节点下所有子节点的value
}
/// <summary>
/// 遍历目标节点下所有子节点的value
/// </summary>
/// <param name="node">目标节点</param>
public static void traChildNodes(XmlNode node)
{
if (node.HasChildNodes)//如果有子节点
{
XmlNodeList list = node.ChildNodes;//得到子节点集合
foreach (XmlNode n in list)//递归遍历每一个子节点
traChildNodes(n);
Console.WriteLine();
}
else//没有子节点了,说明该节点已经是叶子节点,输出节点的名字和内容
Console.WriteLine("{0}: {1}", node.ParentNode.Name, node.InnerText);
}
}
}