web-dev-qa-db-ja.com

XDocumentに複数の名前空間宣言を追加するにはどうすればよいですか?

XDocumentを使用して、既知の構造でXmlドキュメントを作成しています。私が構築しようとしている構造は次のとおりです。

<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>

名前空間宣言を正しく追加するにはどうすればよいですか?

34
Paul Suart

どういう意味ですか:

new XAttribute(XNamespace.Xmlns + "ns4", ns4),
new XAttribute(XNamespace.Xmlns + "ns3", ns3),
new XAttribute(XNamespace.Xmlns + "ns2", ns2),
58
Marc Gravell