属性名称在Xelement的setattribute属性中重叠

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了属性名称在Xelement的setattribute属性中重叠相关的知识,希望对你有一定的参考价值。

我正在尝试重新构建XMI结构。所以为此我需要添加如下的子节点

 <node xmi:type="shape" xmi:id="12358" type="rectangle">
 </node >

因此创建了一个XMLElement并尝试使用下面的代码添加属性

 XmlElement child= papNotdoc.CreateElement("node");
 child.SetAttribute("type", "http://www.omg.org/XMI", "Shape");
 child.SetAttribute("id", "http://www.omg.org/XMI","12358");
 child.SetAttribute("type", "rectangle");

使用命名空间URL,以便我在其中一个type属性中获得前缀XMI:

但不幸的是,XML元素将两个类型命名的属性视为相同的属性,并给我一个输出如下

 <node xmi:type="rectangle" xmi:id="12358">
 </node >

我想要一个节点中的xmi:type和type属性。如何实现它?

答案

您应该将null提供给SetAttribute方法的namespaceURI参数。

XmlElement child = papNotdoc.CreateElement("node");
child.SetAttribute("type", "http://www.omg.org/XMI", "Shape");
child.SetAttribute("id", "http://www.omg.org/XMI", "12358");
child.SetAttribute("type", null, "rectangle");

以上是关于属性名称在Xelement的setattribute属性中重叠的主要内容,如果未能解决你的问题,请参考以下文章

关于getAttribute与setAttribute(节点属性)的用法

setAttribute和getAttribute

C#:如何从 XElement 中获取名称(带前缀)作为字符串?

无法通过 XElement 创建名称中带有冒号的 XML 标记 [重复]

JS之setAttribute和getAttribute

c# foreach 没有在循环中获取下一个 XElement 名称