我有一個XDocument.For例如,如何從XDocument獲取文本值?
<cars>
<name>
<ford>model1</ford>
textvalue
<renault>model2</renault>
</name>
</cars>
如何獲得來自的XDocument文本值?如何識別元素中的文本值?
我有一個XDocument.For例如,如何從XDocument獲取文本值?
<cars>
<name>
<ford>model1</ford>
textvalue
<renault>model2</renault>
</name>
</cars>
如何獲得來自的XDocument文本值?如何識別元素中的文本值?
文本值由XLINQ解釋爲XTEXT。因此,你可以很容易地檢查一個節點類型XTEXT或通過檢查節點類型看:
// get all text nodes
var textNodes = document.DescendantNodes()
.Where(x => x.NodeType == XmlNodeType.Text);
然而,這讓我感到你只希望找到一段文字似乎有點寂寞命名textvalue。沒有真正的方法來認識這種有效但不尋常的事情。您可以檢查是否父被命名爲「名」,或者如果textNode本身是單獨還是不見:
// get 'lost' textnodes
var lastTextNodes = document.DescendantNodes()
.Where(x => x.NodeType == XmlNodeType.Text)
.Where(x => x.Parent.Nodes().Count() > 1);
編輯只是一個額外的評論,我看到許多人認爲這個XML是無效的。我不同意這一點。雖然它不漂亮,這是據我所知(和驗證)
假設變量「文檔」中包含的XDocument代表高於你的XML仍然有效,
doc.XPathSelectElement("cars/name").Nodes().OfType<XText>()
這應該給你所有的XTEXT類型包含您正在查找的純文本的文本節點。
@Hanan Khan - 當然可以。它被稱爲混合內容模型。上述XML格式良好。 –
@DevNull我站好了。它是有效的XML。 http://www.w3schools.com/schema/schema_complex_mixed.asp –