抱歉,如果我的问题不清楚。我从 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,对于每个Job Node,只有一个InnerNode1,它有自己的属性和内部节点。如果我想从每个 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;
.........
.........
.........
}
谢谢,埃雷兹
获取每个 InnerNode1
非常简单,您只需调用 .Descendants("InnerNode1")
即可获得每个节点的列表。这是一个可能对您有用的示例。我在节点上调用 parent 以获取其作业名称和 ID。
var innerchilds = xDoc.Descendants("InnerNode1").Select(x => new {
JobID = x.Parent.Attribute("JobID").Value,
JobName = x.Parent.Attribute("JobName").Value,
...
});
我是一名优秀的程序员,十分优秀!