Я обновляю файл XML и хочу сохранить несколько пространств имен с тем же URI, но различными тега привязки с помощью ET.register_namespace
Как использовать register_namespace несколько раз для одного и того же URL-адреса с разными тегами привязки?
После кода, что я пробовал:
ET.register_namespace('', "http://oval.mitre.org/XMLSchema/oval-definitions-5")
ET.register_namespace('', "http://oval.mitre.org/XMLSchema/oval-definitions-5#windows")
ET.register_namespace('', "http://oval.mitre.org/XMLSchema/oval-definitions-5#independent")
ns = "{http://oval.mitre.org/XMLSchema/oval-definitions-5}"
f = open ("def_ex.xml","ra")
tree = ET.parse(f)
root = tree.getroot()
for defn in root.iter('%stag' %ns):
if "patch" in defn.get("class"): #pick id attrib where class attrib is "patch"
print defn.get("id")
mirr_def = copy.deepcopy(defn)
defn.append(mirr_def)
tree.write("def_ex.xml")
exit()
Но проблема third
пространства имен перезапись one
и two
, как показано в следующем выходе коды:
<ns0:tag>
.......
.......
</ns0:tag>
<ns1:tag1>
........
........
</ns1:tag1>
<tag2>
......
......
</tag2>
Моего последний вопрос, как Прес rve все пространства имен, не переписывая друг друга, когда существуют разные «якорные метки» с тем же URI?
Обновлено: def_ex.xml
<oval_definitions xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oval="http://oval.mitre.org/XMLSchema/oval-common-5" xmlns:oval-def="http://oval.mitre.org/XMLSchema/oval-definitions-5" xmlns:windows-def="http://oval.mitre.org/XMLSchema/oval-definitions-5#windows" xmlns:independent-def="http://oval.mitre.org/XMLSchema/oval-definitions-5#independent" xsi:schemaLocation=" http://oval.mitre.org/XMLSchema/oval-definitions-5#windows windows-definitions-schema.xsd http://oval.mitre.org/XMLSchema/oval-definitions-5#independent independent-definitions-schema.xsd http://oval.mitre.org/XMLSchema/oval-definitions-5 oval-definitions-schema.xsd http://oval.mitre.org/XMLSchema/oval-common-5 oval-common-schema.xsd">
<tag id="oval:def:1" class="inventory">
...........
...........
...........
</tag>
<tag1 xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5#windows" id="oval:tst:1" version="1">
............
............
</tag1>
<tag2 xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5#independent" id="oval:tst:2" version="1">
............
............
</tag2>
</oval_definitions>
Непонятный вопрос. «Несколько пространств имен с одинаковым URI» звучат странно. Если URI один и тот же, пространство имен одинаковое. Также, пожалуйста, покажите нам содержимое def_ex.xml. – mzjn
Да, тот же URI с разными тегами привязки, как показано в моем коде, и def_ex.xml - это огромный файл (более 2000 строк) – Naive
Пожалуйста, покажите нам обрезанный образец входного XML и то, что вы хотите, чтобы результат выглядел. А что такое «якорный» тег? – mzjn