更改XmlElement Name属性

时间:2012-09-07 15:10:13

标签: c# xml replace c++-cli

我想在c ++ / cli中更改XmlElement的Name属性。

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

<abc/>

更改为

<xyz/>

我怎样才能做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:7)

您不能像这样更改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);

答案 1 :(得分:4)

您可以使用Linq to Xml,它支持更改XElement的名称:

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