developer
developer

Reputation: 7400

change XmlElement Name property

I would like to change the Name property of an XmlElement in c++/cli.

I would like to do myXmlElem.Name = "xyz", but the compiler tells me that I can't do a set operation on the Name property.

i.e.

<abc/>

changed to

<xyz/>

How can I achieve this?

Thanks!

Upvotes: 1

Views: 13391

Answers (2)

Silent Sojourner
Silent Sojourner

Reputation: 256

You can use Linq to Xml which supports changing the name of an XElement:

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

Upvotes: 4

Matt
Matt

Reputation: 912

you can't change the Name property of an XmlElement like that (Name is read only).

you can however do something like the following (example in C#).

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

EDIT In response to your comment

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);

Upvotes: 7

Related Questions