使用 GML 命名空间创建 XElement 对象时出现问题
我正在尝试使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先,这个 XML
与这个 XML 是等价的,
并且所有 XML 消费者都应该将其视为相同的。也就是说,您可以像这样实现第二个输出:
如果您不指定命名空间声明属性,LINQ to XML 将自动为您选择一个前缀(在本例中它使用空前缀)。如果您想强制使用特定前缀,则需要提供名称空间声明属性。
First of all this XML
is equivalent to this XML
And all XML consumers should treat it as same. That said you can achieve the second output like this:
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.