加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 22:39:07 所属栏目:百科 来源:网络整理
导读:所以,我正在编写一个简单的函数来从 XML文档中删除 XML节点.据我所知,实现这一目标的最简单方法是: 获取将要删除的节点的引用(ChildNode) 使用ChildNode.ParentNode属性(ParentNode)获取对节点父级的引用 调用ParentNode.RemoveChild(ChildNode)方法 现在,
所以,我正在编写一个简单的函数来从 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元素的一部分.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读