[英]Grabbing text of a single element in XDocument (C#)
我有一个看起来像的XML文档
<a>foo<b>bar</b></a>
使用上述XML创建XDocument,然后使用
doc.Descendants(new XName("a")).First().Value
结果是“ foobar”而不是我期望的“ foo”。
我怎么能只得到价值<a />
未减去的值<b />
从<a />
?
提前致谢!
<a>
实际上包含两个节点,一个文本节点和一个b
元素。 您可以过滤XText
类型a
子项:
var xml = "<a>foo<b>bar</b></a>";
var document = XDocument.Parse(xml);
Console.WriteLine(document.Descendants("a").First().Nodes().OfType<XText>().First().Value);
似乎是无效的XML。 也许你应该尝试属性...像这样
<a name="foo">
<b>bar</b>
</a>
这不是一个完全的答案,但是在这个示例中,我会质疑您的XML的有效性。 考虑带有超链接的HTML段落的XML兼容标记:
<p>Go to the <a href="http://stackoverflow.com">StackOverflow</a> front page</p>
该段落的内容( <p>
的值)仍然是完整的句子,而不仅仅是单词“ go to the”。
另外,以您的示例为例,如果<b>bar</b>
之后有更多文本,该怎么办?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.