当前位置 : 主页 > 网页制作 > xml >

为什么XML属性在.NET中没有“父”?

来源:互联网 收集:自由互联 发布时间:2021-06-13
所以,我正在编写一个简单的函数来从 XML文档中删除 XML节点.据我所知,实现这一目标的最简单方法是: 获取将要删除的节点的引用(ChildNode) 使用ChildNode.ParentNode属性(ParentNode)获取对节点
所以,我正在编写一个简单的函数来从 XML文档中删除 XML节点.据我所知,实现这一目标的最简单方法是:

>获取将要删除的节点的引用(ChildNode)
>使用ChildNode.ParentNode属性(ParentNode)获取对节点父级的引用
>调用ParentNode.RemoveChild(ChildNode)方法

现在,如果子节点是XmlElement,这可以很好用,但如果子节点是XML属性怎么办?根据X000Node.ParentNode的MSDN documentation,该属性将不返回任何内容,因为“[attributes]没有父项”.

属性肯定有“父母”,不是吗?必须将属性分配给XML元素,因此在我看来,XML元素将是属性的父元素.

有人可以澄清我的误解,或澄清为什么.NET Framework不会将属性视为拥有父母吗?

您可以使用 XmlAttribute.OwnerElement获取属性的所有者.

您的程序必须修改为以下内容:

>获取将要删除的节点的引用(ChildNode).
>如果节点的类型是XmlAttribute向下转换为该类型(AttributeNode)并使用AttributeNode.OwnerElement属性(ParentNode)获取对节点父节点的引用.如果没有,请转到第4步.
>调用ParentNode.Attributes.Remove(AttributeNode)方法.跳过剩下的步骤.
>使用ChildNode.ParentNode属性(ParentNode)获取对节点父节点的引用.
>调用ParentNode.RemoveChild(ChildNode)方法.

因此,基本上你必须给予属性特殊处理,反映它们实际上不是父子层次结构的一部分,而是 – 元素 – 是XML元素的一部分.

网友评论