Python 2 XML Etree xpath: получение ошибки предиката при попытке синтаксического анализа переменной при проверке атрибутов, например [@attrib = 'VAL'], но с использованием [@attrib = '% s'] - PullRequest
0 голосов
/ 08 мая 2020

Образец XML:

<ParentTag TEST_ID="xxxxxx" ID="1">
    <Child TagType="Manual">
        <Manhrs Cost="100"/>
        <Testing VAL="RANDOM STRING"/>
    </Child>
    <Child TagType="Automated">
        <Manhrs Cost="10"/>
        <Testing VAL="RANDOM STRING2"/>
    </Child>
</ParentTag>
<ParentTag TEST_ID="YYYYYY" ID="1">
    <Child TagType="Manual">
        <Manhrs Cost="100"/>
        <Testing VAL="RANDOM STRING"/>
    </Child>
    <Child TagType="Automated">
        <Manhrs Cost="10"/>
        <Testing VAL="RANDOM STRING2"/>
    </Child>
</ParentTag>
<ParentTag TEST_ID="ZZZZZZZ" ID="1">
    <Child TagType="Manual">
        <Manhrs Cost="100"/>
        <Testing VAL="RANDOM STRING"/>
    </Child>
    <Child TagType="Automated">
        <Manhrs Cost="10"/>
        <Testing VAL="RANDOM STRING2"/>
    </Child>
</ParentTag>

поэтому, если я запустил:

TEST_ID = xxxxxx
for n in root.findall("ParentTag[@TEST_ID = '%s']//Child[@TagType = 'Automated']", % TEST_ID):
        print("FOUND")

ОШИБКА: python2 .7 / xml / etree / ElementPath.py ", строка 224 , в prepare_predicate поднять SyntaxError («недопустимый предикат») SyntaxError: недопустимый предикат

Обратите внимание, что указанный выше код действительно работает в python 3, но мне нужно, чтобы он работал в Python 2.7 Если есть любая альтернатива, кроме многократного цикла в python 2, любезно предоставьте то же

Также я должен использовать xml .etree.ElementTree

1 Ответ

0 голосов
/ 25 мая 2020

Это связано с пробелом между атрибутом и значением, а не с пробелом, его следует определить так: [@ TEST_ID = '{}'] ". Format (value)

...