2012-09-07 78 views
1

我想在C++/cli中更改XmlElement的Name屬性。更改XmlElement名稱屬性

我想做myXmlElem.Name = "xyz",但編譯器告訴我,我無法對Name屬性進行設置操作。

<abc/> 

改爲

<xyz/> 

我怎樣才能做到這一點?

謝謝!

回答

6

您不能更改這樣的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); 
+0

是啊,我想這是我的最後一招..但我也有一大堆的屬性和孩子的原始元素,我將不得不移動。聽起來很頭疼! – developer

+0

myXmlElem.ChildNodes [i]將包含屬性? – developer

+0

是的,它會包含任何類型的節點(屬性,文本,元素等等) – Matt

4

您可以使用LINQ到XML它支持改變的XElement的名字:

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