更改XmlElement Name属性

dev*_*per 1 c# xml replace c++-cli

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

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

<abc/>
Run Code Online (Sandbox Code Playgroud)

变成

<xyz/>
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

谢谢!

Mat*_*att 7

你不能像这样更改XmlElement的Name属性(Name是只读的).

但是,您可以执行以下操作(C#中的示例).

XmlElement xyz = myXmlElem.OwnerDocument.CreateElement("xyz");
myXmlElem.ParentNode.ReplaceChild(xyz, myXmlElem);
Run Code Online (Sandbox Code Playgroud)

编辑回复您的评论

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);
Run Code Online (Sandbox Code Playgroud)