我有一个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;
答案 0 :(得分:1)
您可能需要elem.InnerText
而不是elem.Value.
从类文档InnerText
Gets or sets the concatenated values of the node and all its children开始,Value
是从XmlNode
继承的属性,对属性节点,文本节点等有用,但不是&# 39; t真的适用于像XmlElement
这样的节点。在根据您的文档构建的DOM树中,您正在查找的XmlElement将包含Text
节点,其Value
是您尝试检索的字符串。
答案 1 :(得分:1)
GetElementById仅适用于通过DTD定义的ID属性(不太可能的情况,绝对不是您的样本):
...此版本的产品仅支持DTD中定义的版本。名称为&#34; ID&#34;的属性除非在DTD中定义,否则不是ID类型。不知道属性是否为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);