1
我想在C++/cli中更改XmlElement的Name屬性。更改XmlElement名稱屬性
我想做myXmlElem.Name = "xyz"
,但編譯器告訴我,我無法對Name屬性進行設置操作。
即
<abc/>
改爲
<xyz/>
我怎樣才能做到這一點?
謝謝!
我想在C++/cli中更改XmlElement的Name屬性。更改XmlElement名稱屬性
我想做myXmlElem.Name = "xyz"
,但編譯器告訴我,我無法對Name屬性進行設置操作。
即
<abc/>
改爲
<xyz/>
我怎樣才能做到這一點?
謝謝!
您不能更改這樣的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);
您可以使用LINQ到XML它支持改變的XElement的名字:
XDocument doc = XDocument.Parse("<foo><bar /></foo>");
doc.Root.Name = "changed";//now it will look like <changed><bar /></changed>
是啊,我想這是我的最後一招..但我也有一大堆的屬性和孩子的原始元素,我將不得不移動。聽起來很頭疼! – developer
myXmlElem.ChildNodes [i]將包含屬性? – developer
是的,它會包含任何類型的節點(屬性,文本,元素等等) – Matt