0

このようなXMLドキュメントがある場合

<Doc>
   <File>
      <ObjectID></ObjectID>
   </File>
</Doc>

そしてそれは時々このように見えることがあります

<Doc>
   <Name />
   <File>
      <ObjectID></ObjectID>
   </File>
</Doc>

File-elementsを取得するにはどうすればよいですか?
それらは常に同じレベルにあるとは限りません。ルートレベルにある場合
もあります。ドキュメントに複数回配置される場合もあります(ただし、同じレベルになる場合もあります)。

アップデート

-elementには、以下の要素<File>を含めることもでき<File>ますが、このように解析しないでください。

<Doc>
   <Name />
   <File>
      <ObjectID></ObjectID>
      <RelatedTo>
         <File></File>
      </RelatedTo>
   </File>
</Doc>

その場合、結果は次のようになります。

<File>
   <ObjectID></ObjectID>
   <RelatedTo>
      <File></File>
   </RelatedTo>
</File>
4

1 に答える 1

3

sXMLコードを含む文字列である場合:

var document = XDocument.Parse(s);
var fileElements = document.Descendants("File").
                       ToArray();

単一の要素ではなく配列を取得することに注意してください。ドキュメントに1つしかない場合、配列には1つの要素しかありません。

上記のアプローチは、File要素が他の要素の子であっても機能しますが、それらが「ルートレベル」にあることの意味がわかりません。あなたが私たちに持ってきたのはそうではありませんか?

編集:それを作者の編集に適合させるには:

var elementName = "File";
var firstFileElement = document.Descendants(elementName).
    First();
var fileElements = firstFileElement.Parent.Elements(elementName).
    ToArray();
于 2013-01-12T21:09:27.250 に答える