gpt4 book ai didi

c# - 在不重复每个节点的情况下调用 DescendantNodes

转载 作者:数据小太阳 更新时间:2023-10-29 02:59:50 26 4
gpt4 key购买 nike

我有一个 xml,我想获取它的所有元素。我尝试通过 Descendants() 或 DescendantNodes() 获取这些元素,但它们都返回了我重复的节点

例如,这是我的 xml:

<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FirstElement xsi:type="myType">
<SecondElement>A</SecondElement>
</FirstElement>
</Root>

当我使用这个片段时:

 XElement Elements = XElement.Parse(XML);
IEnumerable<XElement> xElement = Elements.Descendants();
IEnumerable<XNode> xNodes = Elements.DescendantNodes();
foreach (XNode node in xNodes )
{
stringBuilder.Append(node);
}

它给了我两个节点但重复了 <SecondElement> .我知道 Descendants 总是调用它的 child ,以及一个 child 的 child ,但有没有其他方法可以避免这种情况?

然后,这是我的 stringBuilder 的内容:

<FirstElement xsi:type="myType"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SecondElement>A</SecondElement>
</FirstElement>

<SecondElement>A</SecondElement>

最佳答案

那么您实际上是想要所有后代元素还是只想要顶级元素?如果你只想要顶级的,那么使用 Elements()方法 - 返回当前节点正下方的所有元素。

问题不在于节点被重复 - 而是更高级别的节点包含较低级别的节点。因此,将返回较高级别的节点,然后是较低级别的节点,您正在写出这两个节点的整体,这意味着您正在写出较低级别的节点两次。

如果您只是写出您正在查看的节点的名称,您将不会遇到任何问题。但是您还没有说出您真正想做的事情,所以我不知道这是否有帮助...

关于c# - 在不重复每个节点的情况下调用 DescendantNodes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/983760/

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