при использовании .namespace_map в выходной xml добавляется URL-адрес в качестве атрибута в конце тега, где бы ни использовался этот префикс - PullRequest
0 голосов
/ 21 января 2019

XML-файл, который обрабатывается:

<?xml version = "2.0" encoding = "UTF-8"?>
<xmi:XMI xmi:Version = "2.0" xmlns:xmi="http://schema.omg.org/spec/XMI/2.0" xmlns:foo.a ="http://example.com/mphg/" xmlns:foo.b = "http://example.com/abcd/">
<foo.a:city name = "DELHI"></foo.a:city>
<foo.b:city name = "ChandiniChouk"></foo.b:city>
</xmi:XMI>

код для обработки xml с использованием python

import xml.etree.ElementTree as ET
import sys, os

ET._namespace_map["http://example.com/mphg/"] ="foo.a"
ET._namespace_map["http://example.com/abcd/"] = "foo.b"

tree = ET.parse(web.xml)
root = tree.getroot()
tree.write(file, encoding = "UTF-8", xml_declaration = True)

выходной XML-файл

<?xml version = "1.0" encoding = "UTF-8"?>
<xmi:XMI xmi:Version = "2.0" xmlns:xmi="http://schema.omg.org/spec/XMI/2.0">
<foo.a:city name = "DELHI" xmlns:foo.a ="http://example.com/mphg/" ></foo.a:city>
<foo.b:city name = "ChandiniChouk" xmlns:foo.b = "http://example.com/abcd/"></foo.b:city>
</xmi:XMI>

файл добавляется с дополнительным атрибутом, который не требуется, а также все пространства имен удаляются из корневого тега

...