2009-08-12 24 views
29

私は既知の構造でXmlドキュメントを構築するためにXDocumentを使用しています。私が構築しようとしている構造は以下の通りです。複数の名前空間宣言を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

はそれのように見えます! *極端な*迅速な対応に感謝します。 –

+1

3分?マークはONです。 – jcollum

関連する問題