1

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

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

IE

<abc/>

变成

<xyz/>

我怎样才能做到这一点?

谢谢!

4

2 回答 2

7

您不能像那样更改 XmlElement 的 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);
于 2012-09-07T15:16:36.153 回答
4

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

XDocument doc = XDocument.Parse("<foo><bar /></foo>");
doc.Root.Name = "changed";//now it will look like <changed><bar /></changed>
于 2014-08-07T18:47:00.947 回答