私はXDocumentからテキスト値を取得する方法、XDocumentからテキスト値を取得するには?
<cars>
<name>
<ford>model1</ford>
textvalue
<renault>model2</renault>
</name>
</cars>
をXDocument.For例を抱えていますか?要素の中でのテキストの値を特定するにはどうすればよいですか?
私はXDocumentからテキスト値を取得する方法、XDocumentからテキスト値を取得するには?
<cars>
<name>
<ford>model1</ford>
textvalue
<renault>model2</renault>
</name>
</cars>
をXDocument.For例を抱えていますか?要素の中でのテキストの値を特定するにはどうすればよいですか?
テキスト値はXTEXTとしてXLinqによって解釈されます。ノードはタイプ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);
編集ただ1件の余分のコメント、私は多くの人々は、このXMLが無効であることを主張していることがわかります。私はそれに同意しなければならない。そのきれいではありませんが、それは
doc.XPathSelectElement("cars/name").Nodes().OfType<XText>()
これはあなたのXtext型のすべてを与える必要があり、私の知識(とバリデータ)
+1は、XMLが無効であると他の人が同意していないためです。 –
@DevNull奇妙に聞こえる、奇妙な音、標準に反対... – Polity
あなたは正しいです...彼らは間違っています。 ;-) –
上記のあなたのXMLを表すXDocumentを含む変数「ドキュメント」を想定するとに従ってまだ有効ですあなたが探しているプレーンテキストを含むテキストノード。
@ハサン・カーン - もちろん可能です。混合コンテンツモデルと呼ばれています。上記のXMLは整形式です。 –
@DevNull私は訂正しました。それは有効なxmlです。 http://www.w3schools.com/schema/schema_complex_mixed.asp –