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