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