然后按 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;

然后按 ID 获取 XML 文档中的内容

你可能想要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);

现场演示