2013-07-12 47 views
1

我需要生成一個XML文件,它看起來像這樣:結腸添加命名空間XML文件

<?xml version="1.0" encoding="utf-8"?> 
<ns:Root xmlns:ns0="http://namespace"> 
    <Node1> 
    <A>ValueA</A> 
    <B>ValueB</B> 
    </Node1> 
</Root> 

這是我的代碼:

const string ns = "http://namespace"; 
var xDocument = new XDocument(
    new XElement("Root", 
     new XAttribute(XNamespace.Xmlns + "ns0", ns), 
     new XElement("Node1", 
      new XElement("A", "ValueA"), 
      new XElement("B", "ValueB") 
     ) 
    ) 
); 

但是,這會產生:

<?xml version="1.0" encoding="utf-8"?> 
<Root xmlns:ns0="http://namespace"> 
    <Node1> 
    <A>ValueA</A> 
    <B>ValueB</B> 
    </Node1> 
</Root> 

請注意根節點之前缺少的「ns0:」。我如何添加它?其他一切應該完全一樣。

+0

你試圖把' 「NS:根」'',而不是 「根」 作爲''先構造XElement'的參數? – HuorSwords

+1

@HuorSwords:不起作用,我得到「The':'字符,十六進制值0x3A,不能包含在名字中」的例外。 – sventevit

+0

請檢查此問題[答案](http://stackoverflow.com/a/6125645/982431)以獲取類似(甚至不等於)的問題。 – HuorSwords

回答

1

嘗試這個

XNamespace ns = XNamespace.Get("http://namespace"); 

var xDocument = new XDocument(
       new XElement(ns + "Root", 
        new XAttribute(XNamespace.Xmlns + "ns0", ns), 
        new XElement("Node1", 
         new XElement("A", "ValueA"), 
         new XElement("B", "ValueB") 
         ))); 
+0

上帝,這很容易,我只是無法做到,謝謝... – sventevit