2016-12-16 1 views
1

どのように私は、ループ要素名ここすべてのXML要素を知らなくても属性がどのようにループ

を知らなくても、すべてのXML属性は、私のサンプルXML

<dd l="11243" t="641" r="11653" b="1004"> 
    <para l="11276" t="768" r="11620" b="941" alignment="left" spaceBefore="79" lsp="exactly" lspExact="273" language="en"> 
    <ln l="11342" t="768" r="11554" b="941" baseLine="939" underlined="none" subsuperscript="none" fontSize="1250" fontFace="Times New Roman" fontFamily="roman" fontPitch="variable" spacing="19" foreColor="545766"> 
     <wd l="11342" t="768" r="11554" b="941"> 
     <ch l="11342" t="768" r="11453" b="936">4</ch> 
     <ch l="11472" t="768" r="11554" b="941" conf="10">3</ch> 
     </wd> 
    </ln> 
    </para> 
</dd> 

で、ここに私のコードです

XDocument columndoc = XDocument.Parse(reader); 
foreach (var node in columndoc.Descendants("para").ToList()) 
{ 
} 

しかし、私はすべての要素をループし、そのl、t、r、bタグを読みたくありません。

どうすればその属性を使用してループできますか。ありがとう

+0

期待どおりの結果ですか? – Jacky

+0

この投稿のような再帰アルゴリズムを使用してください:http://stackoverflow.com/questions/28976601/recursion-parsing-xml-file-with-attributes-into-treeview-c-sharp – jdweng

答えて

4

Descendants()からの"para"引数を省略すると、すべての子孫要素が取得されます。 Attributes()(この場合はIEnumerable<XElement>の拡張メソッド)を呼び出して、これらすべての要素からすべての属性を取得できます。

var allAttributes = doc.Descendants().Attributes().ToList(); 
+0

ありがとう –

関連する問題