使用 GML 命名空间创建 XElement 对象时出现问题

发布于 2024-09-25 20:37:40 字数 470 浏览 5 评论 0原文

我正在尝试使用 GML 命名空间和 XML to LINQ 构建 XML 文档。

我的目标是一个包含如下内容的 XElement

<gml:name>...</gml:name>

但我得到以下信息:

<name xmlns="http://www.opengis.net/gml" />

问题是元素中缺少 gml:。这是为什么?


我的代码如下:

XNamespace nsGML = "http://www.opengis.net/gml";
XElement item = new XElement(nsGML + "name");

I am trying to build a XML document using the GML namespace and XML to LINQ.

My goal is an XElement with contents like this:

<gml:name>...</gml:name>

But I get the following:

<name xmlns="http://www.opengis.net/gml" />

The problem is that the gml: is missing from the element. Why is that?


My code is as follows:

XNamespace nsGML = "http://www.opengis.net/gml";
XElement item = new XElement(nsGML + "name");

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我ぃ本無心為│何有愛 2024-10-02 20:37:40

首先,这个 XML

<name xmlns="http://www.opengis.net/gml" />

与这个 XML 是等价的,

<gml:name xmlns:gml="http://opengis.net/gml" />

并且所有 XML 消费者都应该将其视为相同的。也就是说,您可以像这样实现第二个输出:

XNamespace nsGML = "http://www.opengis.net/gml";
XElement item = new XElement(nsGML + "name",
                    new XAttribute(XNamespace.Xmlns + "gml", nsGML.NamespaceName));

如果您不指定命名空间声明属性,LINQ to XML 将自动为您选择一个前缀(在本例中它使用空前缀)。如果您想强制使用特定前缀,则需要提供名称空间声明属性。

First of all this XML

<name xmlns="http://www.opengis.net/gml" />

is equivalent to this XML

<gml:name xmlns:gml="http://opengis.net/gml" />

And all XML consumers should treat it as same. That said you can achieve the second output like this:

XNamespace nsGML = "http://www.opengis.net/gml";
XElement item = new XElement(nsGML + "name",
                    new XAttribute(XNamespace.Xmlns + "gml", nsGML.NamespaceName));

If you don't specify the namespace declaration attribute LINQ to XML will pick a prefix automatically for you (in this case it uses the empty one). If you want to force usage of a specific prefix you need to provide the namespace declaration attribute.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文