我有這樣的xml字符串,我試圖將它反序列化爲一個具有類Credentials的對象。但命名空間前綴正在阻止我。如何從XElement中刪除名稱空間前綴(C#)?
Credentials類本身沒有任何XmlRoot屬性來設置命名空間。但是一些包含Credentials屬性的類可以。下面的「ds」前綴來自容器的序列化xml。
容器的XML是這樣的:
<ds:DataSource xmlns:ds="urn:My-Namespace">
<ds:Credentials>
<ds:UserName>foo</ds:UserName>
<ds:Domain>bar</ds:Domain>
</ds:Credentials>
</ds:DataSource>"
然後,當我從containter元素的元素「憑證」,它返回:
<ds:Credentials xmlns:ds="urn:My-Namespace">
<ds:UserName>foo</ds:UserName>
<ds:Domain>bar</ds:Domain>
</ds:Credentials>
我不能把這反序列化一個正確的Credentials對象,因爲額外的名稱空間。是否有可能將其刪除?我試過How to remove namespace prefix. (C#),元素仍然有一個默認的名稱空間。
<Credentials xmlns="urn:My-Namespace">
<UserName>foo</UserName>
<Domain>bar</Domain>
</Credentials>
謝謝,代碼似乎會刪除所有元素的所有屬性,包括不是命名空間的屬性。 – bigbearzhu 2014-08-31 22:40:39
是的,我試圖不要過度複雜的解決方案,因爲發佈的示例沒有除命名空間前綴屬性以外的任何屬性。無論如何,很高興看到你自己提出瞭解決方案 – har07 2014-09-01 01:50:54