从Xmldocument获取多个

时间:2015-02-12 21:10:46

标签: c# xpath xml-parsing

我查询并从其他来源获取此信息

<queryResult xmlns="http://apiblah">
<template>
<entity name="Nodes" type="apiblah" dynamic="False">
<property name="NodeID" type="Int32" /> 
</entity>
</template>
<data>
<Nodes>
<NodeID>823</NodeID> 
</Nodes>
<Nodes>
<NodeID>825</NodeID> 
</Nodes>
<Nodes>
<NodeID>826</NodeID> 
</Nodes>
<Nodes>
<NodeID>839</NodeID> 
</Nodes>
<Nodes>
<NodeID>935</NodeID> 
</Nodes>
</data>
</queryResult>

我试图从这种XML中提取所有nodeID,并且我无法将所有这些节点ID都放入数组中。

每次我尝试通过,我只获得第一个NodeID

var nodeID = result.XPathSelectElement("//*[local-name()='NodeID']").Value; is what works for the first nodeid

关于如何将所有这些作为数组获取的任何建议? 多个NodeID标签正在关闭我的代码

1 个答案:

答案 0 :(得分:0)

如果您能够切换到XDocument(System.Linq.Xml),那么您可以这样做:

    string xml = @"<queryResult xmlns=""http://apiblah"">
<template>
<entity name=""Nodes"" type=""apiblah"" dynamic=""False"">
<property name=""NodeID"" type=""Int32"" /> 
</entity>
</template>
<data>
<Nodes>
<NodeID>823</NodeID> 
</Nodes>
<Nodes>
<NodeID>825</NodeID> 
</Nodes>
<Nodes>
<NodeID>826</NodeID> 
</Nodes>
<Nodes>
<NodeID>839</NodeID> 
</Nodes>
<Nodes>
<NodeID>935</NodeID> 
</Nodes>
</data>
</queryResult>";

XDocument doc = XDocument.Parse(xml);
XNamespace ns = "http://apiblah";
var nodeids = doc.Descendants().Elements(ns + "NodeID");
foreach (var element in nodeids)
{
    Console.WriteLine(element.Value);
}

的产率:

823
825
826
839
935