C#中的XNamespace

时间:2015-05-06 18:32:11

标签: c# xnamespace

我正在使用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="">

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分: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)
                    )
                )
        );