0

XDocument を使用して XML を作成しています。これが私のコードです

        var ns = XNamespace.Get("url");        
    XDocument requestXMl = new XDocument(
        new XElement(ns+"WEB_REQUEST",
            new XElement("HTTP_HEADER_INFORMATION",
                new XElement("DEFINED_HEADERS",
                    new XElement("HTTP_DEFINED_REQUEST_HEADER",
                            new XElement("ItemNameType", "RequestDate"),
                            new XElement("ItemValue", _currentTime)
                                ),
                        new XElement("HTTP_DEFINED_REQUEST_HEADER",
                            new XElement("ItemNameType", "AuthorizationValue"),
                            new XElement("ItemValue", credentials)
                                )
                              )
                           ),
            new XElement("COLL",
                new XElement("TID", _t),
                new XElement("SID", _s)
                        )
                    )
            );

このコードの出力は

  <WEB_REQUEST xmlns="url">
  <HTTP_HEADER_INFORMATION xmlns="">
    <DEFINED_HEADERS>
      <HTTP_DEFINED_REQUEST_HEADER>
        <ItemNameType>RequestDate</ItemNameType>
        <ItemValue>Wed,06 May 2015 18:14:33 GMT</ItemValue>
      </HTTP_DEFINED_REQUEST_HEADER>
      <HTTP_DEFINED_REQUEST_HEADER>
        <ItemNameType>AuthorizationValue</ItemNameType>
        <ItemValue>ieuKB5voR3w==</ItemValue>
      </HTTP_DEFINED_REQUEST_HEADER>
    </DEFINED_HEADERS>
  </HTTP_HEADER_INFORMATION>
  <COLL xmlns="">
    <TID></TID>
    <SID></SID>
  </COLL>
</WEB_REQUEST>

出力に表示されるように、xmlns が 3 回表示されることは望ましくありません。2回だけ出してほしい。

<WEB_REQUEST xmlns="url"> 
  <COLLABORATION xmlns="">

どうすればこれを達成できますか?

4

1 に答える 1

0

空の xmlns を保持したくない要素に「url」名前空間を指定します。これにより、ルート要素を除くすべての xml 名前空間がクリアされます。

var ns = XNamespace.Get("url");        
XDocument requestXMl = new XDocument(
    new XElement(ns+"WEB_REQUEST",
        new XElement(ns+"HTTP_HEADER_INFORMATION",
            new XElement(ns+"DEFINED_HEADERS",
                new XElement(ns+"HTTP_DEFINED_REQUEST_HEADER",
                        new XElement(ns+"ItemNameType", "RequestDate"),
                        new XElement(ns+"ItemValue", _currentTime)
                            ),
                    new XElement(ns+"HTTP_DEFINED_REQUEST_HEADER",
                        new XElement(ns+"ItemNameType", "AuthorizationValue"),
                        new XElement(ns+"ItemValue", credentials)
                            )
                          )
                       ),
        new XElement(ns + "COLL",
            new XElement(ns + "TID", _t),
            new XElement(ns + "SID", _s)
                    )
                )
        );
于 2015-05-06T18:47:01.400 に答える