然后按 ID 获取 XML 文档中的内容
本文关键字:文档 XML ID 获取 然后 | 更新日期: 2023-09-27 18:36:15
我有一个XML文档
<?xml version="1.0" encoding="utf-8" ?>
<data>
<string id="test-text">Some sample text from XML</string>
<string id="test-text2">Some more sample text</string>
</data>
我已经加载到 XmlDocument 对象中,并且我正在尝试使用 id 获取文本。我可能在这里错过了一些非常明显的东西,但这就是我目前尝试的方式。
XmlElement elem = doc.GetElementById("test-text");
return elem.Value;
你可能想要elem.InnerText
而不是elem.Value.
从类文档中,InnerText
获取或设置节点及其所有子节点的串联值,而Value
是从XmlNode
继承的属性,对属性节点、文本节点等很有用,但实际上不适用于XmlElement
等节点。 在从文档构建的 DOM 树中,您找到的 XmlElement 将包含一个Text
节点,其Value
是你尝试检索的字符串。
GetElementById 仅适用于通过 DTD 定义的 ID 属性(不太可能的情况,绝对不适用于您的示例):
。此版本的产品仅支持 DTD 中定义的属性。名称为"ID"的属性不属于 ID 类型,除非在 DTD 中如此定义。未知属性是否为 ID 类型的实现应返回 null。
您需要带有属性检查的基本 XPath:
var d = new XmlDocument();
d.LoadXml(@"<data>
<string id='test-text'>Some sample text from XML</string>
<string id='test-text2'>Some more sample text</string>
</data>");
var elem = d.SelectSingleNode("//*[@id='test-text']");
Console.WriteLine(elem.InnerText);
现场演示