2016-05-20 26 views
0

我使用XElement建立在C#中的XML文檔,我正在嘗試設置如何使用特殊的「XML」的命名空間前綴的XElement

<myEelment xml:space="preserve"> 

這是我當前的嘗試:

myElement.SetAttributeValue(XName.Get("space", "xml"), "preserve"); 

但它出來是這樣的:

<myEelment p4:space="preserve" xmlns:p4="xml"> 

我明白這是怎麼回事錯了 - 我的代碼使用的「XML」作爲名稱我想用作命名空間前綴時的空間URI。我的問題是,AFAICT的「xml」命名空間前綴在某種程度上是隱含的,實際上並沒有與它關聯的命名空間URI。那麼我怎樣才能用命名空間前綴「xml」來生成屬性呢?

+0

'XNamespace.Xml.GetName( 「空間」)'和與'HTTP相關順便說一句'xml'前綴:// www.w3.org/XML/1998/namespace'命名空間URI。 – PetSerAl

回答

2

標準名稱空間可作爲XNamespace類的屬性。使用它。

var myElement = doc.Descendants("myElement").Single(); 
myElement.SetAttributeValue(XNamespace.Xml + "space", "preserve"); 
+0

謝謝 - 我知道會有一個非常簡單的答案,但我只是無法找到一種方法來谷歌它:)。我不太喜歡MS重寫「+」運算符的方式,這樣你就可以將一個命名空間添加到一個字符串中並獲得一個名字 - 這似乎是對「+」概念的濫用,給一個隨便的讀者留下了印象您將命名空間轉換爲字符串,然後進行字符串連接。基於這個原因,我更喜歡@PetSerAl的語法。 – Andy

相關問題