我有一个 XDocument。例如,
<cars>
<name>
<ford>model1</ford>
textvalue
<renault>model2</renault>
</name>
</cars>
如何从 XDocument 中获取文本值?如何识别元素中的textvalue?
最佳答案
XLinq 将文本值解释为 XText。因此,您可以轻松检查节点是否属于 XText 类型或通过检查 NodeType 参见:
// get all text nodes
var textNodes = document.DescendantNodes()
.Where(x => x.NodeType == XmlNodeType.Text);
然而,我突然想到,你只想找到那段看起来有点孤独的名为textvalue 的文本。没有真正的方法来识别这个有效但不寻常的东西。您可以检查父节点是否命名为“name”,或者 textNode 本身是否单独或看不到:
// get 'lost' textnodes
var lastTextNodes = document.DescendantNodes()
.Where(x => x.NodeType == XmlNodeType.Text)
.Where(x => x.Parent.Nodes().Count() > 1);
edit 只是一个额外的评论,我看到很多人声称这个 XML 无效。我不同意这一点。虽然它不漂亮,但根据我的知识(和验证器)它仍然有效
关于c# - 如何从 XDocument 获取文本值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7831855/