在 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 />
的值?
提前致谢!
似乎有点无效 XML。也许你应该尝试属性...像这样
<a name="foo">
<b>bar</b>
</a>
这不是一个完整的答案,但我会质疑您在此示例中 XML 的有效性。
考虑带有超链接的 HTML 段落的 XML 兼容标记:
<p>Go to the <a href="http://whosebug.com">Whosebug</a> front page</p>
段落的内容(<p>
的值)仍然是完整的句子,而不仅仅是单词 "go to the "。
此外,根据您的示例,如果在 <b>bar</b>
之后有更多文本会怎样?
<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);
我有一个 XML 文件看起来像
<a>foo<b>bar</b></a>
使用上述 XML 创建 XDocument,然后使用
doc.Descendants(new XName("a")).First().Value
结果 "foobar" 而不是我预期的 "foo"。
如何在不从 <a />
中减去 <b />
的值的情况下只得到 <a />
的值?
提前致谢!
似乎有点无效 XML。也许你应该尝试属性...像这样
<a name="foo">
<b>bar</b>
</a>
这不是一个完整的答案,但我会质疑您在此示例中 XML 的有效性。 考虑带有超链接的 HTML 段落的 XML 兼容标记:
<p>Go to the <a href="http://whosebug.com">Whosebug</a> front page</p>
段落的内容(<p>
的值)仍然是完整的句子,而不仅仅是单词 "go to the "。
此外,根据您的示例,如果在 <b>bar</b>
之后有更多文本会怎样?
<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);