我有一个类似于
的XML文档<a>foo<b>bar</b></a>
使用上述XML创建XDocument,然后使用
doc.Descendants(new XName("a")).First().Value
按照我的预期产生“foobar”而不是“foo”。
如何在不从<a />
中减去<b />
的值的情况下获取<a />
的值?
提前致谢!
答案 0 :(得分:3)
<a>
实际上包含两个节点,一个文本节点和b
元素。您可以将a
个孩子过滤为XText
类型:
var xml = "<a>foo<b>bar</b></a>";
var document = XDocument.Parse(xml);
Console.WriteLine(document.Descendants("a").First().Nodes().OfType<XText>().First().Value);
答案 1 :(得分:0)
似乎有点无效的XML。也许你应该尝试属性......这样的事情
<a name="foo">
<b>bar</b>
</a>
答案 2 :(得分:0)
这不是一个很好的答案,但我会质疑这个例子中XML的有效性。 考虑带有超链接的HTML段落的XML兼容标记:
<p>Go to the <a href="http://stackoverflow.com">StackOverflow</a> front page</p>
段落的内容(<p>
的值)仍然是完整的句子,而不仅仅是单词&#34;转到&#34;。
另外,根据您的示例,如果 <b>bar</b>
之后有更多文字,会发生什么?