繁体   English   中英

捕获XDocument(C#)中单个元素的文本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM