XDocument Descendants()は、親ノードのすべての子値を表示します

ジュード

これは、XDocumentを使用して解析されるXMLです。

<e xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <FormValues />
  <Others>
    <Bank>
      <Key>FirstKey</Key>
      <Value>FirstValue</Value>
    </Bank>
    <Bank>
      <Key>SecondKey</Key>
      <Value>SecondValue</Value>
    </Bank>
    <Bank>
      <Key>ThirdKey</Key>
      <Value>ThirdValue</Value>
    </Bank>
    <Bank>
      <Key>FourthKey</Key>
      <Value>FourthValue</Value>
    </Bank>
  </Others>
  <Prob>ProbValue</Prob>
  <URL>http://example.com/</URL>
  <Method>GET</Method>
</e>

私が行った場合:

string doc = "<e xmlns:xsd..> ..... </e>";
System.Xml.Linq.XDocument docNew = System.Xml.Linq.XDocument.Parse(doc);
var elements = docNew.Root.Descendants();
@foreach (var element in elements)
{
    <label>@element.Name.ToString():</label><span>@element.Value.ToString()</span>
}

次のように表示されます。

FormValues:
Others: FirstKeyFirstValueSecondKeySecondValueThirdKeyThirdValueFourthKeyFourthValue
Bank : FirstKeyFirstValue
Key  : FirstKey
Value: FirstValue
Bank : SecondKeySecondValue
Key  : SecondKey
Value: SecondValue
Bank : ThirdKeyThirdValue
Key  : ThirdKey
Value: ThirdValue
Bank : FourthKeyFourthValue
Key  : FourthKey
Value: FourthValue
Prob : ProbValue
URL  : http://example.com/
Method:GET

キーノードと値ノードにのみ値を表示させたい。お気に入り:

Others
Bank
Key  : FirstKey
Value: FirstValue
Bank
Key  : SecondKey
Value: SecondValue
....
dbc

XElement.Valueこの要素のすべてのテキストコンテンツを含む文字列を返しますが、それぞれが直接所有するXText子ノードの連結値のみを表示する必要があります(これらは、要素の実際の文字データを保持するノードです。)XElement

これは次のように実行できます。

var docNew = System.Xml.Linq.XDocument.Parse(doc);
foreach (var element in docNew.Root.Descendants())
{
    var textValue = string.Concat(element.Nodes().OfType<System.Xml.Linq.XText>().Select(tx => tx.Value));
    Console.WriteLine(string.Format("{0}: {1}", element.Name.ToString(), textValue));
}

このロジックは、拡張メソッドに抽出できます。

public static partial class XNodeExtensions
{
    public static string LocalValue(this XContainer node)
    {
        if (node == null)
            return null;
        return string.Concat(node.Nodes().OfType<XText>().Select(tx => tx.Value));
    }
}

そして次のように使用されます:

var textValue = element.LocalValue();

以下を出力します。

FormValues: 
Others: 
Bank: 
Key: FirstKey
Value: FirstValue
Bank: 
Key: SecondKey
Value: SecondValue
Bank: 
Key: ThirdKey
Value: ThirdValue
Bank: 
Key: FourthKey
Value: FourthValue
Prob: ProbValue
URL: http://example.com/
Method: GET

ここでデモフィドル

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

XDocumentをループして、子ノードの値を取得する

分類Dev

xDocumentのi ++?

分類Dev

XDocumentの解析

分類Dev

XDocument.Descendants()とDescendantNodes()

分類Dev

Xdocumentを照会する

分類Dev

XDocument の子孫が null 参照をスローしています

分類Dev

XDocument解析エラー

分類Dev

xdocumentでノード属性を取得する

分類Dev

XDocumentからすべてのコメントを削除します

分類Dev

C# XDocument XML ファイルからすべてのノードを読み取ります

分類Dev

XDocumentは、すべての要素名と値を2つの別々のリストに返します

分類Dev

XDocumentの子孫を削除する

分類Dev

C#XDocumentはXMLからすべての画像を取得し、LongListSelectorに表示します

分類Dev

xdocumentでノードの値を抽出中に例外が発生しました

分類Dev

XDocument要素の値を取得する方法

分類Dev

xdocumentの子孫ノードとノード

分類Dev

xdocument1とxdocument2の違いを取得する方法

分類Dev

XDocumentのシリアル化

分類Dev

UWP-XMLNodeListと同等のXDocument

分類Dev

XDocumentが行番号を失う

分類Dev

XDocument同じレベルにない2つのノードの親を取得する方法

分類Dev

XDocumentを非同期でロードする

分類Dev

XDocumentの特定の要素を編集する

分類Dev

XDocument要素-タグを削除します

分類Dev

XdocumentオブジェクトのX個の最初のノードを取得します

分類Dev

置換およびJsonへの変換のためにXDocument内のHTMLノードを特定します

分類Dev

XDocumentの「FullEndElement()」を出力する方法

分類Dev

ノードがXDocumentに存在するかどうかを確認します

分類Dev

XDocument値C#を取得する

Related 関連記事

  1. 1

    XDocumentをループして、子ノードの値を取得する

  2. 2

    xDocumentのi ++?

  3. 3

    XDocumentの解析

  4. 4

    XDocument.Descendants()とDescendantNodes()

  5. 5

    Xdocumentを照会する

  6. 6

    XDocument の子孫が null 参照をスローしています

  7. 7

    XDocument解析エラー

  8. 8

    xdocumentでノード属性を取得する

  9. 9

    XDocumentからすべてのコメントを削除します

  10. 10

    C# XDocument XML ファイルからすべてのノードを読み取ります

  11. 11

    XDocumentは、すべての要素名と値を2つの別々のリストに返します

  12. 12

    XDocumentの子孫を削除する

  13. 13

    C#XDocumentはXMLからすべての画像を取得し、LongListSelectorに表示します

  14. 14

    xdocumentでノードの値を抽出中に例外が発生しました

  15. 15

    XDocument要素の値を取得する方法

  16. 16

    xdocumentの子孫ノードとノード

  17. 17

    xdocument1とxdocument2の違いを取得する方法

  18. 18

    XDocumentのシリアル化

  19. 19

    UWP-XMLNodeListと同等のXDocument

  20. 20

    XDocumentが行番号を失う

  21. 21

    XDocument同じレベルにない2つのノードの親を取得する方法

  22. 22

    XDocumentを非同期でロードする

  23. 23

    XDocumentの特定の要素を編集する

  24. 24

    XDocument要素-タグを削除します

  25. 25

    XdocumentオブジェクトのX個の最初のノードを取得します

  26. 26

    置換およびJsonへの変換のためにXDocument内のHTMLノードを特定します

  27. 27

    XDocumentの「FullEndElement()」を出力する方法

  28. 28

    ノードがXDocumentに存在するかどうかを確認します

  29. 29

    XDocument値C#を取得する

ホットタグ

アーカイブ