0

次のようなXMLファイルを指定します。

<?xml version="1.0" encoding="utf-8"?>
<Root>
   <Policy id="832cbfc6-a451-4d77-a995-4ceb9d3bbe01" username ="DCassidy">     
      <Title>Test 1</Title>    
  </Policy>
  <Policy id="832cbfc6-a451-4d77-a995-4ceb9d3bbe02" userName ="DCassidy">
    <Title>Test 2</Title>
 </Policy>........and so on

LINQ to XMLを使用して、次のように各要素を指定しなくても、すべての「ポリシー」要素とそれに含まれる要素を返すことは可能ですか?

var subset = doc.Elements("Policy").SelectMany(x => new[] { x.Element("Title").Value });

ファイルに要素を動的に追加し、フィルタリングしてサブセットを返すことができる必要があります。

できれば、後で呼び出すことができるようにXElemetsのコレクションを返します。

subset.CreateReader() on.

編集

より明確にするために。username属性に基づいて、すべてのポリシーオブジェクトとその子孫を返します。そのサブセットを取得して、CreateReader()を使用したいと思います

誰か助けてもらえますか?

ありがとう

4

3 に答える 3

0

要素名を指定せずにメソッドを使用して、Elements()すべての直接の子孫を取得します。

XDocument.Root.Elements()

于 2012-12-14T14:14:13.717 に答える
0

Elements名前を指定しないオーバーロードを使用して、すべての子要素を取得できます。

var xml = @"
<Root>
   <Policy id='832cbfc6-a451-4d77-a995-4ceb9d3bbe01' username ='DCassidy'>     
      <Title>Test 1</Title>    
  </Policy>
  <Policy id='832cbfc6-a451-4d77-a995-4ceb9d3bbe02' userName ='DCassidy'>
    <Title>Test 2</Title>
 </Policy>
</Root>
";
var xElement = XElement.Parse(xml);
var subset = xElement.Elements("Policy").SelectMany(e => e.Elements());

内容は次subsetのとおりです。IEnumerable<XElement>

<Title>Test 1</Title> 
<Title>Test 2</Title> 
于 2012-12-14T14:14:26.957 に答える
0

あなたが何を意味するのかは本当に明確ではありませんが、おそらく:

var subset = doc.Elements("Policy").Descendants();

また

var subset = doc.Elements("Policy").DescendantsAndSelf();

これにより、直接の子孫だけでなく、すべての子孫が取得されます。達成しようとしていることを正確に明確にできれば、それは役に立ちます。

于 2012-12-14T14:14:27.293 に答える