L XML - пустое пространство имен - как получить предметы? - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть набор XPATHS для этого XML формата. Проблема в том, что иногда он имеет указанное пространство имен.

<?xml version="1.0" encoding="UTF-8"?>
<SHOP xmlns="http://www.zbozi.cz/ns/offer/1.0">
<SHOPITEM>
    <PRODUCTNAME>Crysta váza 4 CM</PRODUCTNAME>
    <DESCRIPTION><![CDATA[Český producent je vážený po celém světě

Я не могу просто сделать это в этом случае, чтобы получить все элементы SHOPITEM:

root.xpath('//SHOPITEM')

Мне нужно указать пространство имен а затем префикс каждого тега.

root.xpath('//g:SHOPITEM',namespaces={'g':'http://www.zbozi.cz/ns/offer/1.0'})

Когда я делаю это:

root.xpath('//SHOPITEM',namespaces={'':'http://www.zbozi.cz/ns/offer/1.0'})

В нем говорится:

пустой префикс пространства имен не поддерживается в xpath

Но я не могу просто добавить все теги к «g». Есть ли лучший способ сделать это? Заставить дерево lxml вести себя так, как будто не было namespace, или просто автоматически разобрать его?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...