1

我正在尝试使用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");
4

1 回答 1

3

首先是这个 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 将自动为您选择一个前缀(在这种情况下,它使用空前缀)。如果要强制使用特定前缀,则需要提供命名空间声明属性。

于 2010-10-01T11:30:30.617 回答