我查询并从其他来源获取此信息
<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标签正在关闭我的代码
答案 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