Xml читать в python с циклом из запроса мыла

<?xml version = "1.0" encoding = "utf-8"?>
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <DownloadDataResponse xmlns = "http://tempuri.org/">
           <DownloadDataResult>
           <?xml version= "1.0" encoding = "UTF-8"?>
            <SkynetExchange>
                <MasterManifests>
                    <MasterManifest>
                        <Id>200044923</Id>
                        <OriginStation>DHX</OriginStation>
                        <MastermanifestPrefix>0222</MastermanifestPrefix>
                        <MastermanifestNumber>1074680</MastermanifestNumber>
                        <DateofManifest>2019-03-04 13:25:27</DateofManifest>
                        <FlightNumber>20190304</FlightNumber>
                        <MAWB>20190304</MAWB>
                        <SUBMAWB>PO TEST MANIFEST</SUBMAWB>
                        <ToStation>SA5</ToStation>
                        <TotalBags>1</TotalBags>
                        <TotalWeight>1.500</TotalWeight>
                        <PrealertInstructions></PrealertInstructions>
                        <MasterManifestStatus>CLS</MasterManifestStatus>
                    </MasterManifest>
                    <MasterManifest>
                        <Id>434324343</Id>
                        <OriginStation>DSDHX</OriginStation>
                        <MastermanifestPrefix>0s222</MastermanifestPrefix>
                        <MastermanifestNumber>32354</MastermanifestNumber>
                        <DateofManifest>2018-03-04 13:25:27</DateofManifest>
                        <FlightNumber>12212</FlightNumber>
                        <MAWB>afsd</MAWB>
                        <SUBMAWB>OP TEST MANIFEST</SUBMAWB>
                        <ToStation>SA5</ToStation>
                        <TotalBags>1</TotalBags>
                        <TotalWeight>1.500</TotalWeight>
                        <PrealertInstructions></PrealertInstructions>
                        <MasterManifestStatus>CLS</MasterManifestStatus>
                    </MasterManifest>
                </MasterManifests>
            </SkynetExchange>
        </DownloadDataResult>
    </DownloadDataResponse>
  </soap:Body>
</soap:Envelope>

У меня есть этот xml, и я хочу запустить цикл для данных MasterManifests, которые имеют несколько тегов MasterManifest. Я хочу прочитать каждое значение тега, например id, OriginStation и т. д. и т. д.

Пожалуйста помогите

Опять строка или файл?

DirtyBit 07.03.2019 11:09

Возможный дубликат читать xml в питоне

Shanteshwar Inde 07.03.2019 11:11

@ShanteshwarInde Не обман, поскольку у него другое требование.

DirtyBit 07.03.2019 11:14
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
377
1

Ответы 1

список_текст.xml:

<?xml version = "1.0" encoding = "utf-8"?>
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <DownloadDataResponse xmlns = "http://tempuri.org/">
           <DownloadDataResult>
            <SkynetExchange>
                <MasterManifests>
                    <MasterManifest>
                        <Id>200044923</Id>
                        <OriginStation>DHX</OriginStation>
                        <MastermanifestPrefix>0222</MastermanifestPrefix>
                        <MastermanifestNumber>1074680</MastermanifestNumber>
                        <DateofManifest>2019-03-04 13:25:27</DateofManifest>
                        <FlightNumber>20190304</FlightNumber>
                        <MAWB>20190304</MAWB>
                        <SUBMAWB>PO TEST MANIFEST</SUBMAWB>
                        <ToStation>SA5</ToStation>
                        <TotalBags>1</TotalBags>
                        <TotalWeight>1.500</TotalWeight>
                        <PrealertInstructions> </PrealertInstructions>
                        <MasterManifestStatus>CLS</MasterManifestStatus>
                    </MasterManifest>
                    <MasterManifest>
                        <Id>434324343</Id>
                        <OriginStation>DSDHX</OriginStation>
                        <MastermanifestPrefix>0s222</MastermanifestPrefix>
                        <MastermanifestNumber>32354</MastermanifestNumber>
                        <DateofManifest>2018-03-04 13:25:27</DateofManifest>
                        <FlightNumber>12212</FlightNumber>
                        <MAWB>afsd</MAWB>
                        <SUBMAWB>OP TEST MANIFEST</SUBMAWB>
                        <ToStation>SA5</ToStation>
                        <TotalBags>1</TotalBags>
                        <TotalWeight>1.500</TotalWeight>
                        <PrealertInstructions> </PrealertInstructions>
                        <MasterManifestStatus>CLS</MasterManifestStatus>
                    </MasterManifest>
                </MasterManifests>
            </SkynetExchange>
        </DownloadDataResult>
    </DownloadDataResponse>
  </soap:Body>
</soap:Envelope>

а потом:

import xml.dom.minidom as md

root = md.parse('list_test.xml')
from xml.dom.minidom import Node
Manifests = root.getElementsByTagName('MasterManifest')
for elem in Manifests:
    try:
        for x in elem.childNodes:
            if x.nodeType == Node.ELEMENT_NODE:
                 print(x.tagName, ": ", x.childNodes[0].data)
    except IndexError:
        pass

ВЫХОД:

Id :  200044923
OriginStation :  DHX
MastermanifestPrefix :  0222
MastermanifestNumber :  1074680
DateofManifest :  2019-03-04 13:25:27
FlightNumber :  20190304
MAWB :  20190304
SUBMAWB :  PO TEST MANIFEST
ToStation :  SA5
TotalBags :  1
TotalWeight :  1.500
PrealertInstructions :   
MasterManifestStatus :  CLS


Id :  434324343
OriginStation :  DSDHX
MastermanifestPrefix :  0s222
MastermanifestNumber :  32354
DateofManifest :  2018-03-04 13:25:27
FlightNumber :  12212
MAWB :  afsd
SUBMAWB :  OP TEST MANIFEST
ToStation :  SA5
TotalBags :  1
TotalWeight :  1.500
PrealertInstructions :   
MasterManifestStatus :  CLS

Другие вопросы по теме