すべてのサブエレメントノード名と値を取得するためのXelement
-
28-09-2019 - |
質問
私はこのようなアプローチを考えています。これが実際にこの方法で機能するかどうかを教えてください:サンプルXMLの場合:
<Root>
<Node>
<SubEl1>abc</SubEl1>
<SubEl2>def</SubEl2>
<SubEl3>123</SubEl3>
<SubEl4>456</SubEl4>
</Node>
</Root>
入りたい <Node>
, 、ノード/要素名をチェックしてループし、値を取得します。このようなもの、たとえば、名前はタスク1に「subel1」を使用しています。要素名が「subel2」であることを確認すると、タスク2が行われます。すべてのサブエレメントをチェックする必要があります!
例(動作していないコード):
//looping through 'Node' children
switch(SubElName for 'Node element)
{
case : 'SubEl1'
//Do Task1 using the SubEl1's value/TextName ...
case: 'SubEl2'
//Task2 ...
...
case: default //Do default task.....
}
//end loop
他のアプローチ(xelement、xmldocument、selectnodes()などを考えることができれば、それも高く評価されます!
解決
このタスクでは、ノード名とノード値のリスト/辞書を作成するだけで、スイッチでそれを使用できます。
var list = from x in XElement.Load(**yourxmlfile**).Element("Node").Elements()
select new
{
Name = x.Name,
Value = (string)x
};
これで、名前のリスト、バリューペアがスイッチメソッドに単純に渡すことができます。
他のヒント
まだそれを利用していませんが、linqからXMLはあらゆる種類の素晴らしいように見えます。ここにいくつかのリンクがあります。MSDNリファレンス linqに夢中
所属していません StackOverflow