Linq to XML 禁用默认命名空间
本文关键字:默认 命名空间 to XML Linq | 更新日期: 2023-09-27 18:36:24
我正在尝试使用 LINQ to XML 为 WebDAV 服务器编写查询,但我遇到了一个问题,即 LINQ 正在设置默认命名空间 ( xmlns = "bla"
),WebDAV 似乎不支持该命名空间。
XNamespace ns = "d";
var content = new XElement(ns + "propfind"
,new XAttribute(XNamespace.Xmlns + "d", "DAV:")
,new XElement(ns + "allprops"));
预期输出为:
<d:propfind xmlns:d="DAV:"><d:allprop /></d:propfind>
但是无论我如何尝试序列化(即使使用 XElement.Save(someStream, SaveOptions.DisableFormatting)
),我总是得到我试图点击的 WebDav 服务器不支持的这个。
<propfind xmlns:d="DAV:" xmlns="d"><allprop /></propfind>
问题是您的元素不在 DAV:
命名空间中 - 它在 d
命名空间中。需要区分命名空间 URI 和命名空间别名。你想要:
XNamespace ns = "DAV:";
var content = new XElement(ns + "propfind",
new XAttribute(XNamespace.Xmlns + "d", ns),
new XElement(ns + "allprops"));