gpt4 book ai didi

c# - 在遍历 Xdocument 时获取 xDocument 元素的子节点

转载 作者:太空宇宙 更新时间:2023-11-03 20:25:06 27 4
gpt4 key购买 nike

抱歉,如果我的问题不清楚。我从 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,
...
});

关于c# - 在遍历 Xdocument 时获取 xDocument 元素的子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11036096/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com