从 C# 中的 XML 字符串中获取元素列表

Posted

技术标签:

【中文标题】从 C# 中的 XML 字符串中获取元素列表【英文标题】:Getting a list of elements out of an XML string in C# 【发布时间】:2021-12-07 23:09:15 【问题描述】:

我有一个名为 doc 的字符串 XML,如下所示:

<equity location="New York", index=0>
  <bucket date="20211009">
    ...
  </bucket>
  <parameters>
    <parameter Key="ID">1234</parameter>
    <parameter Key="A">6</parameter>
    <parameter Key="B">22.5</parameter>
    <parameter Key="C">12</parameter>
    <parameter Key="BD">12,8,5</parameter>
  </parameters>
</equity>

我正在尝试获取特定键的“参数”,比如说“B”。 使用:

XmlDocument xmldoc = new XmlDocument();
xmmldoc.loadXML(doc.content);

然后浏览***,我尝试绕过该行但没有成功:

var key = xmldoc.SelectSingleNode("Descendant::parameters/parameter[@Key='B']").value;

【问题讨论】:

我强烈建议改用 LINQ to XML - 从 XDocument.Parse() 开始,然后从那里开始。这是一个比旧的 XmlDocument 更好的 API。虽然之后您可以使用 XPath,但我个人只会使用 LINQ 查询来查找您想要的元素。 谢谢@JonSkeet,让我试一试。 试试equity/parameters/parameter[@Key='B'] 【参考方案1】:

你引用的例子是有效的。我猜Descendant:: 是区分大小写的。

XmlNode node = xmldoc.SelectSingleNode("descendant::parameters/parameter[@Key='B']");

这确实为您提供了您正在寻找的节点参数,除了 node.Value 将返回 null

在您的情况下,您可以使用node.InnerTextnode.InnerXml 来获取值。

【讨论】:

非常感谢! 很高兴听到这个消息。如果有帮助,请不要忘记接受答案:)

以上是关于从 C# 中的 XML 字符串中获取元素列表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# ASP.Net 从 XML 文档中获取特定 XML 元素的列表?

从C#中的xml字符串获取元素[重复]

如何从 C# 中的 xml 元素中获取最高值?

如何使用适配器为recyclerview从字符串数组列表中的元素获取字符串

如何从 C# 中的 xml 字符串中获取特定值

使用 Linq C# 获取元组对象列表中的最新日期对象