C# xml 根据属性值直接得到目标节点
2012-08-15 11:49
483 查看
转载自:http://hi.baidu.com/guidee/item/a92f3e4b76a4d9afdf2a9f51
<?xml version="1.0" encoding="utf-8" ?>
<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);
}
}
}
C# xml 根据属性值直接得到目标节点
<?xml version="1.0" encoding="utf-8" ?><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);
}
}
}
![](http://hiphotos.baidu.com/guidee/pic/item/c6fdec2a9db62603d52af146.jpg)
相关文章推荐
- C#读取XML(全部或根据某个节点的属性值)
- [C#]已知某个XML节点的某个属性值,直接定位该节点
- XmlDocument根据节点的属性值获取节点
- 用C#根据内容创建xml元素节点名不乎时规则时的一种很2的写法。
- 如何利用C#在XML 中添加 节点得到如下的格式 插3根鸡毛了
- C#通过XML节点属性/属性值读取写入XML操作代码实例
- C#之XML基础 为一个节点添加两个属性值
- C# 如何得到XML文件中指定的节点属性值
- C# XML 输出xml根节点下的直接(第一级)子节点的名称
- C# XML 输出xml根节点下的直接(第一级)子节点的内容
- C# 读取xml中特定节点的属性值 xmldocument方式
- C# XML 输出xml根节点下的直接(第一级)子节点所有的属性的名字和值
- Linq to XML 根据属性值遍历子节点
- C# XML 输出xml根节点下的直接(第一级)子节点指定的属性的名字和值
- 根据XML文件父节点的属性值取得所有子节点
- C# 读取xml中特定节点的属性值 xmldocument方式 【有些乱,但有思路】
- c# 根据字段名,得到对象中的属性值
- C# 读取xml中特定节点的属性值 xmldocument方式
- Xml 根据路径和属性值获取节点
- C# 将xml中二进制文件 转化为视频 以及 根据节点读取节点值