从 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.InnerText
或node.InnerXml
来获取值。
【讨论】:
非常感谢! 很高兴听到这个消息。如果有帮助,请不要忘记接受答案:)以上是关于从 C# 中的 XML 字符串中获取元素列表的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 C# ASP.Net 从 XML 文档中获取特定 XML 元素的列表?