1

私はこのxmlを持っています:

    <root>      
      <sub>maintext1
        <subsub>subtext1</subsub>
        <subsub>subtext2</subsub>
      </sub>          
    </root>

私は最初に < sub>.Value を試しましたが、これはサブ内のすべてを返し、次に同じことを行う < sub>.ToString を返しました。私は解決策を探しましたが、どこでもxmlElement.InnerTextが使用されていましたが、利用できないxElementにはそれが必要です。xElement の内部テキスト プロパティを使用するにはどうすればよいですか?

4

2 に答える 2

1

メソッドの戻り値で Linq 拡張機能XElementを使用すると、特定の型のすべてのノードを取得できます。OfTypeNodes

XElement.Nodes().OfType<XText>()

この例は、あなたが探している値を取得します。

var xml = 
    @"<root>      
       <sub>maintext1
        <subsub>subtext1</subsub>
        <subsub>subtext2</subsub>
       </sub>          
      </root>";
var xel = XElement.Parse(xml);
var textNodes = xel.Element("sub").Nodes().OfType<XText>();
var mainText1 = textNodes.First().Value;
于 2012-11-28T21:18:02.877 に答える
1

maintext1テキストノードを作成するので、次のようにすることができます:

var xml = @"<root>      
<sub>maintext1
<subsub>subtext1</subsub>
<subsub>subtext2</subsub>
</sub>          
</root>";
var doc = XDocument.Parse(xml);
var txt = (IEnumerable<object>)doc.XPathEvaluate("/root/sub/text()");
var textNode = (XText)txt.First();
Console.WriteLine(textNode.Value);

これをコンパイルするには、次の名前空間をインポートする必要があることに注意してください。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
using System.Xml.XPath;
于 2012-11-28T21:09:16.130 に答える