1

私の質問が不明確であった場合は申し訳ありません。xDocument から一連の要素とそれぞれの属性を取得しました。今、私はすべての反復ですべてのノードの子孫を取得し、それらを反復してすべての属性を取得したいと考えています。

構造:

<Jobs>
     <Job attr1=val1 attr2=val2 attr3=val3>
          <InnerNode1 InnerAttr1=val6 InnerAttr2=7>
                     <InnerNodeChild1>
                        .........
                     </InnerNodeChild1>
                     <InnerNodeChild2>
                        ............
                     </InnerNodeChild2>
                     <InnerNodeChild3>
                        .......
                     </InnerNodeChild3>
          </InnerNode1>
          <InnerNode2 InnerAttr1=val6 InnerAttr2=7>
                     <InnerNodeChild1>
                        .........
                     </InnerNodeChild1>
                     <InnerNodeChild2>
                        ............
                     </InnerNodeChild2>
                     <InnerNodeChild3>
                        .......
                     </InnerNodeChild3>
          </InnerNode2>
          <InnerNode3 InnerAttr1=val6 InnerAttr2=7>
                     <InnerNodeChild1>
                        .........
                     </InnerNodeChild1>
                     <InnerNodeChild2>
                        ............
                     </InnerNodeChild2>
                     <InnerNodeChild3>
                        .......
                     </InnerNodeChild3>
          </InnerNode3>
     </job>
     <Job attr1=val4 attr2=val5>
          <InnerNode1 InnerAttr1=val6 InnerAttr2=7>
                     <InnerNodeChild1>
                        .........
                     </InnerNodeChild1>
                     <InnerNodeChild2>
                        ............
                     </InnerNodeChild2>
                     <InnerNodeChild3>
                        .......
                     </InnerNodeChild3>
          </InnerNode1>
          <InnerNode2 InnerAttr1=val6 InnerAttr2=7>
                     <InnerNodeChild1>
                        .........
                     </InnerNodeChild1>
                     <InnerNodeChild2>
                        ............
                     </InnerNodeChild2>
                     <InnerNodeChild3>
                        .......
                     </InnerNodeChild3>
          </InnerNode2>
          <InnerNode3 InnerAttr1=val6 InnerAttr2=7>
                     <InnerNodeChild1>
                        .........
                     </InnerNodeChild1>
                     <InnerNodeChild2>
                        ............
                     </InnerNodeChild2>
                     <InnerNodeChild3>
                        .......
                     </InnerNodeChild3>
          </InnerNode3>
     </Job>
     .....
     .....
     .....
     <OtherNodeInSameLevelAsJob>
     </OtherNodeInSameLevelAsJob>
</Jobs>

OK、すべてのジョブ ノードに対してInnerNode1が 1 つだけあり、それ自体の属性と内部ノードがあります。すべての InnerNode1 からすべての属性と InnerNodeChilds を取得したいが、次の例のようにジョブを実行中に実行する場合、何をする必要がありますか?

  XDocument xDoc = XDocument.Load(xDr);
            var Jobs = from Job in xDoc.Descendants("Job")
                       select new {  
                            JobID = Job.Attribute("JobID").Value,
                            JobName = Job.Attribute("JobName").Value,
                            ........
                            ........
                            ........
                        };

その後:

 foreach(var Job in Jobs){
        string JobId = Job.JobID;
        string JobName = job.JobName;
        .........
        .........
        .........
 }

ありがとう、エレズ

4

2 に答える 2

4

すべてを取得するのInnerNode1は非常に簡単です。電話.Descendants("InnerNode1")をかけるだけで、すべてのリストが表示されます。これがあなたのために働くかもしれない例です。ノードの親を呼び出して、そのジョブ名とIDを取得します。

var innerchilds = xDoc.Descendants("InnerNode1").Select(x => new {
    JobID = x.Parent.Attribute("JobID").Value,
    JobName = x.Parent.Attribute("JobName").Value,
    ...
    });
于 2012-06-14T15:52:30.400 に答える
1

セレクトの中からセレクトするという意味ですか?

var Jobs = from Job in xDoc.Descendants("Job")
                   select new {  
                        JobID = Job.Attribute("JobID").Value,
                        JobName = Job.Attribute("JobName").Value,
                        InnerNode = from inner in Job.Elements("InnerNode")
                            select new
                            {
                               Name = inner.Attribute("Name")
                            }
                        ........
                        ........
                        ........
                    };
于 2012-06-14T15:29:44.453 に答える