C# 按ID查找元素,然后获取XML文档中的内容

C# 按ID查找元素,然后获取XML文档中的内容,c#,xml,C#,Xml,我有一个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> 您可能想要elem.InnerText而不是ele

我有一个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>

您可能想要
elem.InnerText
而不是
elem.Value.

从类文档中,
InnerText
,而
Value
是继承自
XmlNode
的属性,对属性节点、文本节点等有用,但实际上不适用于
xmlement
等节点。在从您的文档构建的DOM树中,您正在查找的XmlElement将包含一个
文本
节点,其
是您试图检索的字符串。

仅适用于通过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);
var d=new XmlDocument();
d、 LoadXml(@)
来自XML的一些示例文本
更多示例文本
");
var elem=d.SelectSingleNode(“//*[@id='test-text']”);
Console.WriteLine(元素InnerText);

你说得对,但不幸的是,我的XmlElement elem没有设置为值,因此在这之前也无法工作fixed@WilliamDunne,好的,
变量的值是多少?它当前是“测试文本”@WilliamDunne,嗯,看起来应该可以。如何创建
doc
?什么是
doc.InnerXml
?这是我从调试器中提取的:“XML中的一些示例文本更多示例文本”我编辑了您的标题。请看“,”其中的共识是“不,他们不应该”。今天学到了一些新东西。谢谢
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);