【问题标题】:Get multiple from Xmldocument从 Xmldocument 获取多个
【发布时间】:2015-04-13 19:12:21
【问题描述】:

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

<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,但我无法将它们全部放入数组中。

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

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

关于如何将它们全部作为数组获取的任何建议? 多个 NodeID 标记使我的代码关闭

【问题讨论】:

  • 您只能从返回多个的 XPath 查询中获取 XML 元素。因此,一旦获得节点列表,就必须遍历列表以提取值并将它们放入数组中。

标签: c# xpath xml-parsing


【解决方案1】:

如果您能够切换到 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 2023-03-05
    相关资源
    最近更新 更多