XmlReader怎么读取指定节点的内容??(问-答)

来源:互联网 发布:网络表妹是什么意思 编辑:程序博客网 时间:2024/06/07 12:35

Answer1

C# code
XmlDocument doc = new XmlDocument(); doc.Load("xxx.xml"); XmlNodeList nodeList; XmlNode root = doc.DocumentElement; nodeList=root.SelectNodes("//Re/Content"); //Change the price on the books. foreach (XmlNode content in nodeList) { ... }



(example)

XmlDocument doc=new XmlDocument();

doc.Load("... .xml");

XmlNodeList list=doc.GetElementsByTagName("Shot");

foreach(XmlNode node in list)

{

// do something...

}


Answer2


XmlReader 可实现不了你的要求。。。
XmlReader是只前进不后退且不能"跳跃"的,直到所有的节点被读完。
对于处理数据量巨大的Xml用XmlReader比较节省内存。

但对于你的要求,建议使用XPath即1楼的XmlDocument + SelectNodes
或者使用Linq2Xml


Answer3

非要用XmlReader的话可以这样:

C# code
while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element && reader.Name == "你想处理的节点名") { ... break; }}


Answer4


reader 和 dom 是两套 xml 访问体系
using (XmlReader reader = XmlReader.Create(xmlFilePath))
{
while (tr.Read()){
if (tr.NodeType == XmlNodeType.Element){
for (int i = 0; i < tr.AttributeCount; i++){
richTextBox1.AppendText(tr.GetAttribute(i)+"\r\n");
}
}
}
XmlDocument doc = new XmlDocument();
doc.LoadXml("");
XmlNode temp = doc.SelectSingleNode("NewDataSet/Table/Name[@ID='J1']");
string s = temp.InnerText;
或LINQ TO XML获取值

0 0
原创粉丝点击