2009-08-12 95 views
29

我正在使用XDocument在已知結構中構建Xml文檔。我試圖建立的結構如下:如何將多個名稱空間聲明添加到XDocument?

<request xmlns:ns4="http://www.example.com/a" xmlns:ns3="http://www.example.com/b" xmlns:ns2="http://www.example.com/c" > 
    <requestId>d78d4056-a831-4c7d-a357-d14402f623fc</requestId> 
    .... 
</request> 

請注意「xmlns:nsX」屬性。

我想,沒有成功,將這些屬性添加到我的「請求」元素。

XNamespace ns4 = XNamespace.Get("http://www.example.com/a"); 
XNamespace ns3 = XNamespace.Get("http://www.example.com/b"); 
XNamespace ns2 = XNamespace.Get("http://www.example.com/c"); 

XDocument doc = new XDocument(
    new XDeclaration("1.0", "utf-8", "no"), 
    new XElement("request", 
     new XAttribute("ns4", ns4), 
     new XAttribute("ns3", ns3), 
     new XAttribute("ns2", ns2), 
     new XElement("requestId", Guid.NewGuid()) 
    ) 
); 

然而,這將產生以下:

<request ns4="http://www.example.com/a" ns3="http://www.example.com/b" ns2="http://www.example.com/c"> 
    <requestId>38b07cfb-5e41-4d9a-97c8-4740c0432f11</requestId> 
</request> 

如何正確添加命名空間聲明?

回答

49

你的意思是:

  new XAttribute(XNamespace.Xmlns + "ns4", ns4), 
      new XAttribute(XNamespace.Xmlns + "ns3", ns3), 
      new XAttribute(XNamespace.Xmlns + "ns2", ns2), 
+0

看起來它!感謝*非常*快速的迴應。 – 2009-08-12 10:31:59

+1

3分鐘?馬克就是這樣。 – jcollum 2009-12-30 17:51:14

相關問題