知道为什么RemoveAttributes无效吗?
foreach (XElement myItem in _list_XEle)
{
MyObj temp = new MyObj();
XElement myCopy = new XElement(myItem);
myCopy.RemoveAttributes();
// other stuff
temp.String1 = myCopy.ToString();
_list_MyObj.Add(temp);
}
在此代码之后,属性仍然存在。不确定是否相关,但所有属性都以名称空间为前缀。
非常感谢答案 0 :(得分:0)
我猜你的情况如何,但是给出了以下XML:
<content xmlns:ns="SomeNameSpace" xmlns="DefaultNamesSpace">
<customer ns:id="123" ns:attr="abc" />
<customer ns:id="125" ns:attr="fgr" />
</content>
我写了一个类似于你的示例代码:
var dom = XElement.Load("XMLFile1.xml");
XNamespace ns = "DefaultNamesSpace";
foreach (var myItem in dom.Elements(ns + "customer"))
{
XElement myCopy = new XElement(myItem);
myCopy.RemoveAttributes();
//myCopy.Name = myCopy.Name.LocalName;
}
如果按原样运行,myCopy将为<customer xmlns="DefaultNamesSpace" />
,因为属性已删除,但该元素仍在默认命名空间中,也标记为。要删除该命名空间属性,应将复制的XElement的名称更改为空命名空间。如果您取消注释最后一行,则您的XElement将为<customer />