2
Ответы были даны сотни раз, но все же я не мог найти решение. Я пробовал официальную документацию и ответы на stackoverflow.Анализ XML в Python с использованием ElementTree
У меня есть, что XML-структуру:
<?xml version="1.0" encoding="windows-1252"?>
<OpenShipments xmlns="x-schema:OpenShipments.xdr">
<OpenShipment ProcessStatus="Processed" ShipmentOption="">
<ShipTo>
<CompanyOrName><![CDATA[xxx]]></CompanyOrName>
<Attention><![CDATA[xxx]]></Attention>
<Address1><![CDATA[xxx]]></Address1>
<PostalCode><![CDATA[xxx]]></PostalCode>
<CityOrTown><![CDATA[xxx]]></CityOrTown>
<Telephone><![CDATA[xxx]]></Telephone>
<EmailAddress><![CDATA[xxx]]></EmailAddress>
<CountryTerritory><![CDATA[xxx]]></CountryTerritory>
</ShipTo>
<ShipmentInformation>
<ServiceType>ST</ServiceType>
<PackageType>CP</PackageType>
<ShipmentActualWeight><![CDATA[XXX]]></ShipmentActualWeight>
<QVNOption>
<QVNRecipientAndNotificationTypes>
<CompanyOrName/>
<ContactName/>
<EMailAddress/>
<LabelCreation/>
</QVNRecipientAndNotificationTypes>
<ShipFromCompanyOrName>xxx</ShipFromCompanyOrName>
</QVNOption>
</ShipmentInformation>
<ProcessMessage>
<ShipmentRates>
<ShipmentCharges>
<Rate>
<Published>XXX</Published>
<Negotiated>XXX</Negotiated>
</Rate>
</ShipmentCharges>
<ShipperCharges>
<Rate>
<Published>XXX</Published>
<Negotiated>XXX</Negotiated>
</Rate>
</ShipperCharges>
<ReceiverCharges>
<Rate>
<Published>0,00</Published>
<Negotiated>0,00</Negotiated>
</Rate>
</ReceiverCharges>
<QVN>
<Rate>
<Published>0,00</Published>
<Negotiated>0,00</Negotiated>
</Rate>
</QVN>
<PackageRates>
<PackageRate>
<TrackingNumber>TRACKING NUMBER</TrackingNumber>
<PackageCharges>
<Rate>
<Published>0,00</Published>
<Negotiated>0,00</Negotiated>
</Rate>
</PackageCharges>
<Delivery_AreaSurcharge>
<Rate>
<Published>0,00</Published>
<Negotiated>0,00</Negotiated>
</Rate>
</Delivery_AreaSurcharge>
</PackageRate>
</PackageRates>
</ShipmentRates>
<TrackingNumbers>
<TrackingNumber>TRACKING NUMBER</TrackingNumber>
</TrackingNumbers>
<ShipID>XXX</ShipID>
<ImportID></ImportID>
<Reference1></Reference1>
<Reference2></Reference2>
<ShipmentID></ShipmentID>
<PRONumber></PRONumber>
</ProcessMessage>
</OpenShipment>
</OpenShipments>
Потребность добраться до значения "Trackingnumber". Я пробовал findall()
и find()
функции, но без результата.
import xml.etree.ElementTree as ET
import pprint
tree = ET.parse('file.out')
root = tree.getroot()
print root.findall('TrackingNumber')
# []
print root.find('TrackingNumber')
# None
ElementTree должен был сделать доступ к элементам XML простым и, но это оказалось слишком сложным для меня.
Вот что мне нужно! – user3041764
Не беспокойтесь, вы могли бы также «xm.findall ('.// {x-schema: OpenShipments.xdr} TrackingNumber')', но это было бы неплохо, если бы вы использовали несколько узлов в вашем запросе xpath –
, почему простой 'findall ('TrackingNumber') 'не работает? – user3041764