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

时间:2010-10-01 11:19:42

标签: .net namespaces linq-to-xml gml

我正在尝试使用 GML 命名空间和 XML到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");

1 个答案:

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

相关问题