Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python LXML中的KML文档中添加名称空间_Python_Namespaces_Lxml - Fatal编程技术网

在Python LXML中的KML文档中添加名称空间

在Python LXML中的KML文档中添加名称空间,python,namespaces,lxml,Python,Namespaces,Lxml,我正在Google Extension上阅读以下参考资料: 因为我需要使用带有gx前缀gx:drawOrder的元素,所以我需要将名称空间更新为: <kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2"> 我先尝试识别元素,然后使用.set,但没有成功 有人能帮忙吗 这就是我的KML的前两行: <kml xmlns="http://www.ope

我正在Google Extension上阅读以下参考资料:

因为我需要使用带有gx前缀gx:drawOrder的元素,所以我需要将名称空间更新为:

<kml xmlns="http://www.opengis.net/kml/2.2"
  xmlns:gx="http://www.google.com/kml/ext/2.2">

我先尝试识别元素,然后使用.set,但没有成功

有人能帮忙吗

这就是我的KML的前两行:

<kml xmlns="http://www.opengis.net/kml/2.2">
<Document id="root_doc">


我认为更改第一行很简单。

当您添加绑定到另一个名称空间的新元素时,XML文件序列化时将自动插入该名称空间的声明。默认情况下,声明不会出现在根元素上,并且前缀可能不是您想要的

演示:

新产出:

<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
  <gx:drawOrder/>
</kml>

<kml xmlns="http://www.opengis.net/kml/2.2">
  <ns0:drawOrder xmlns:ns0="http://www.google.com/kml/ext/2.2"/>
</kml>
etree.cleanup_namespaces(root, top_nsmap={"gx": ns})
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
  <gx:drawOrder/>
</kml>