0
我有下面的XML:解析XML與LXML和Python
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<LogonResponse xmlns="http://schemas.navitaire.com/ClientServices/Common/SessionManagerClient">
<LogonResult>
<LastName xmlns="http://schemas.navitaire.com/Messages/Session/Response">Mont</LastName>
<FirstName xmlns="http://schemas.navitaire.com/Messages/Session/Response">Paul</FirstName>
<PersonID xmlns="http://schemas.navitaire.com/Messages/Session/Response">123</PersonID>
<CultureCode xmlns="http://schemas.navitaire.com/Messages/Session/Response">en-US</CultureCode>
<CurrencyCode xmlns="http://schemas.navitaire.com/Messages/Session/Response">Dollar</CurrencyCode>
<LastLogon xmlns="http://schemas.navitaire.com/Messages/Session/Response">0001-01-01T00:00:00</LastLogon>
<SessionContext xmlns="http://schemas.navitaire.com/Common">
<SessionControl>OneOnly</SessionControl>
<SystemType>Default</SystemType>
<SessionID>0</SessionID>
<SequenceNumber>0</SequenceNumber>
<MessageVersion>0</MessageVersion>
<Signature>00000000-0000-0000-0000-000000000000</Signature>
<ChannelType>Default</ChannelType>
<InTransaction>false</InTransaction>
<TransactionDepth>0</TransactionDepth>
<TransactionCount>0</TransactionCount>
<SecureToken>kFBOdZGqP6s=|/TftALE31236mSppQoFpArBizzz=</SecureToken>
</SessionContext>
</LogonResult>
</LogonResponse>
</s:Body>
</s:Envelope>
的想法是搶SecureToken,簽名和MessageVersion到變量,我嘗試使用下面的代碼:
SecureToken = tree.find('.//SecureToken').text
但沒有運氣,我需要使用所有的命名空間或其他東西來實現這一目標?
請記住,此XML是來自請求的返回,我無法對其進行編輯。
總之,是的,你需要用標籤指定名稱空間。看到你的選擇鏈接的欺騙。 –
另請參閱[使用Python ElementTree中的命名空間解析XML](http://stackoverflow.com/a/14853417) –