в python, как бы извлечь раздел XML - PullRequest
0 голосов
/ 17 марта 2020

Дайте XML ниже

<soap:Envelope
        xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <soap:Body>
                <A>
                    <B>
                        <Id>55</Id>
                        <Name>My Name</Name>
                    </B>
                </A>
        </soap:Body>
</soap:Envelope>                

Как мне извлечь весь раздел "B"? т.е. Как мне извлечь этот раздел:

    <B>
        <Id>55</Id>
        <Name>My Name</Name>
    </B>

Я пытался использовать ElementTree . Но я не могу заставить его работать. Я пробовал:

root = ET.fromstring(data)
r = root[0][0][0]

Но это дало мне только сам тег:

<Element 'B' at 0x10b7aa590>  

Ответы [ 2 ]

1 голос
/ 18 марта 2020
print(ET.tostring(r))

покажет, что r содержит все, что вы хотите.

чтобы получить элементы B напрямую, вы можете попробовать

for b in root.iterfind('.//B'):
    print(ET.tostring(b))
0 голосов
/ 18 марта 2020

Попробуйте что-то вроде:

from lxml import etree

bee = """your xml above"""    
doc = etree.fromstring(bee)
target = doc.xpath('//B')
print(etree.tostring(target[0]).decode())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...