如何使用System.Xml选择特定节点?

时间:2011-09-14 20:21:24

标签: c# xml

我有一个XML文档:

<Item>
   <ID>1</ID>
   <Title>Title1</Title>
   <Rank>1</Rank>
</Item>
<Item>
   <ID>2</ID>
    <Title>Title2</Title>
    <Rank>2</Rank>
</Item>

这个文件有10个项目,我遇到的问题是我会选择Title2 ID 2和Rank 1.

 for (int i = 0; i < 10; i++)
 {
      XmlNode titleNode = doc.GetElementsByTagName("Title", NAMESPACE).Item(i);
      XmlNode asinNode = doc.GetElementsByTagName("ID", NAMESPACE).Item(i);
      XmlNode SalesNode = doc.GetElementsByTagName("SalesRank", NAMESPACE).Item(i);
 }

这是我加载文档的方式。

            WebRequest request = HttpWebRequest.Create(url);
            WebResponse response = request.GetResponse();
            XmlDocument doc = new XmlDocument();
            doc.Load(response.GetResponseStream());

3 个答案:

答案 0 :(得分:1)

XmlNode node = doc.SelectSingleNode("/Item[ID='"+i.ToString()+"']");
XmlNode titleNode = node.SelectSingleNode("Title");
XmlNode asinNode = node.SelectSingleNode("ID");
XmlNode rankNode = node.SelectSingleNode("Rank");

答案 1 :(得分:0)

您可以使用XML(反)序列化:只需为Item创建一个快速类。 XmlSerializer.Deserialize()文档中的完整示例。

当然,这只是解析XML的许多技术之一(XPath,Linq to XML,...)。请你选择。

答案 2 :(得分:-1)

这是一个使用XPath的工作示例,我相信这是你真正需要的。

let doc = XmlDocument()
doc.LoadXml ("<As><A><B>1</B></A><A><B>2</B></A></As>")
let n = doc.SelectSingleNode("As/A[B/text() = '1']")