2012-09-07 96 views
1

我想在C++/cli中更改XmlElement的Name属性。更改XmlElement名称属性

我想做myXmlElem.Name = "xyz",但编译器告诉我,我无法对Name属性进行设置操作。

<abc/> 

改为

<xyz/> 

我怎样才能做到这一点?

谢谢!

回答

6

您不能更改这样的XmlElement的Name属性(Name是只读的)。

然而,你可以做类似下面的事情(C#中的例子)。

XmlElement xyz = myXmlElem.OwnerDocument.CreateElement("xyz"); 
myXmlElem.ParentNode.ReplaceChild(xyz, myXmlElem); 

编辑回应您的评论

XmlElement xyz = myXmlElem.OwnerDocument.CreateElement("xyz"); 

for(int i = 0; i < myXmlElem.ChildNodes.Count; i++){ 
    XmlNode child = myXmlElem.ChildNodes[i]; 
    xyz.AppendChild(child.CloneNode(true)); 
} 

myXmlElem.ParentNode.ReplaceChild(xyz, myXmlElem); 
+0

是啊,我想这是我的最后一招..但我也有一大堆的属性和孩子的原始元素,我将不得不移动。听起来很头疼! – developer

+0

myXmlElem.ChildNodes [i]将包含属性? – developer

+0

是的,它会包含任何类型的节点(属性,文本,元素等等) – Matt

4

您可以使用LINQ到XML它支持改变的XElement的名字:

XDocument doc = XDocument.Parse("<foo><bar /></foo>"); 
doc.Root.Name = "changed";//now it will look like <changed><bar /></changed>