改变的XmlElement名称属性(change XmlElement Name property)

2019-10-17 05:06发布

我想改变在C ++ / CLI的XmlElement的名称属性。

我想这样做myXmlElem.Name = "xyz" ,但是编译器告诉我,我不能做的Name属性设置操作。

<abc/>

变成

<xyz/>

我怎样才能做到这一点?

谢谢!

Answer 1:

你不能改变这样一个的XmlElement的名称属性(名称为只读)。

但是你可以做类似如下(在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);


Answer 2:

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

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


文章来源: change XmlElement Name property