小编lon*_*ckz的帖子

带有LXML的标记中的多个XML命名空间

我正在尝试使用Pythons LXML库创建一个可由Garmin的Mapsource产品读取的GPX文件.它们的GPX文件上的标题如下所示

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" 
     creator="MapSource 6.15.5" version="1.1" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
Run Code Online (Sandbox Code Playgroud)

当我使用以下代码时:

xmlns = "http://www.topografix.com/GPX/1/1"
xsi = "http://www.w3.org/2001/XMLSchema-instance"
schemaLocation = "http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"
version = "1.1"
ns = "{xsi}"

getXML = etree.Element("{" + xmlns + "}gpx", version=version, attrib={"{xsi}schemaLocation": schemaLocation}, creator='My Product', nsmap={'xsi': xsi, None: xmlns})
print(etree.tostring(getXML, xml_declaration=True, standalone='Yes', encoding="UTF-8", pretty_print=True))
Run Code Online (Sandbox Code Playgroud)

我明白了:

<?xml version=\'1.0\' encoding=\'UTF-8\' standalone=\'yes\'?>
<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="http://www.topografix.com/GPX/1/1" xmlns:ns0="xsi"
     ns0:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"
     version="1.1" creator="My Product"/>
Run Code Online (Sandbox Code Playgroud)

哪个有烦人的ns0标签.这可能是完全有效的XML,但Mapsource并不欣赏它.

知道怎么让这个没有ns0标签吗?

python xml lxml gpx

14
推荐指数
1
解决办法
5631
查看次数

标签 统计

gpx ×1

lxml ×1

python ×1

xml ×1