2013-12-15 33 views
0

任何想法爲什麼RemoveAttributes不起作用?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

只是爲了澄清 - 它只剩下xmlns屬性 – ausgeorge

回答

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 />