2010-06-16 41 views
3

我有一個XElement,由如下所示的轉換產生。如何刪除名稱空間前綴。 (C#)

<src:Person xmlns:src="http://www.palantir.za"> 
    <src:Name>Jenifer Harvey</src:Name> 
    <src:BirthDate>1969-11-13</src:BirthDate> 
    <src:IdentityNumber>6906678550017</src:IdentityNumber> 
    <src:Sex>Male</src:Sex> 
</src:Person> 

我想這樣的XElement轉換成具有「SRC」作爲默認的命名空間,而不是一個「命名」如上命名一個新的XElement。

我意識到它們可能在語義上是相同的,我只是想保持存儲的一致性。

我想要以下內容。

<Person xmlns="http://www.palantir.za"> 
     <Name>Jenifer Harvey</Name> 
     <BirthDate>1969-11-13</BirthDate> 
     <IdentityNumber>6906678550017</IdentityNumber> 
     <Sex>Male</Sex> 
</Person> 

感謝

問候

克雷格。

回答

3

只要簡單地除去xmlns:src屬性,並添加一個新的xmlns屬性:

XDocument xdoc = XDocument.Parse(
     "<src:Person xmlns:src=\"http://www.palantir.za\">" + 
     " <src:Name>Jenifer Harvey</src:Name>" + 
     " <src:BirthDate>1969-11-13</src:BirthDate>" + 
     " <src:IdentityNumber>6906678550017</src:IdentityNumber>" + 
     " <src:Sex>Male</src:Sex>" + 
     "</src:Person>"); 

xdoc.Root.Add(new XAttribute("xmlns", "http://www.palantir.za")); 
xdoc.Root.Attributes(XNamespace.Xmlns + "scr").Remove(); 
+0

謝謝,簡單的解決方案只是沒想到我...:-o – Jim 2010-06-17 12:28:29

+2

你好。如果xml具有名稱空間前綴屬性,該怎麼辦?如何刪除屬性中的名稱空間前綴,例如:男性 – Suresh 2012-03-09 18:12:19

相關問題