我正在使用XDocument。例如:
<cars>
<name>
<ford>model1</ford>
textvalue
<renault>model2</renault>
</name>
</cars>
如何从XDocument中获取文本值?如何在元素中识别文本值?
<cars>
<name>
<ford>model1</ford>
textvalue
<renault>model2</renault>
</name>
</cars>
如何从XDocument中获取文本值?如何在元素中识别文本值?
XLinq将文本值解释为XText。因此,您可以通过检查节点的类型或检查NodeType轻松确定节点是否为XText类型,具体如下:
// get all text nodes
var textNodes = document.DescendantNodes()
.Where(x => x.NodeType == XmlNodeType.Text);
// get 'lost' textnodes
var lastTextNodes = document.DescendantNodes()
.Where(x => x.NodeType == XmlNodeType.Text)
.Where(x => x.Parent.Nodes().Count() > 1);
编辑 只是一个额外的评论,我发现许多人声称这个XML文件无效。我不同意这一点。虽然它不够美观,但据我的知识(和验证器)所知,它仍然是有效的。
doc.XPathSelectElement("cars/name").Nodes().OfType<XText>()
这应该能为你提供所有包含所需纯文本的 XText 类型文本节点。