C# 从Xmldocument获取多个
我从另一个来源查询并获取此信息C# 从Xmldocument获取多个,c#,xpath,xml-parsing,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> <Nod
<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>
关于如何将它们作为一个数组获取,有什么建议吗?
多个NodeID标记使我的代码延迟如果您能够切换到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);
}
只能从返回倍数的XPath查询中获取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