2016-07-06 90 views
0

我目前正在使用python和NetSuite Webservices進行一個側面項目。我已經能夠成功發送數據中心的請求。我使用元素樹導入來解析xml請求和響應。無論我試圖抓住下面的一個網址,我最終都沒有獲得任何價值,我認爲這與名字空間有關,而我很害怕。Netsuite命名空間問題

<?xml version="1.0" encoding="utf-8"?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <soapenv:Header> 
     <platformMsgs:documentInfo xmlns:platformMsgs="urn:messages_2016_1.platform.webservices.netsuite.com"> 
      <platformMsgs:nsId>WEBSERVICES__XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</platformMsgs:nsId> 
     </platformMsgs:documentInfo> 
    </soapenv:Header> 
    <soapenv:Body> 
     <getDataCenterUrlsResponse xmlns=""> 
      <platformCore:getDataCenterUrlsResult xmlns:platformCore="urn:core_2016_1.platform.webservices.netsuite.com"> 
       <platformCore:status isSuccess="true" /> 
       <platformCore:dataCenterUrls> 
        <platformCore:restDomain>https://rest.na1.netsuite.com</platformCore:restDomain> 
        <platformCore:webservicesDomain>https://webservices.na1.netsuite.com</platformCore:webservicesDomain> 
        <platformCore:systemDomain>https://system.na1.netsuite.com</platformCore:systemDomain> 
       </platformCore:dataCenterUrls> 
      </platformCore:getDataCenterUrlsResult> 
     </getDataCenterUrlsResponse> 
    </soapenv:Body> 
</soapenv:Envelope> 

import xml.etree.ElementTree as ET 
ns = {'platformCore': 'urn:messages_2016_1.platform.webservices.netsuite.com'} 
xml.find('platformCore:webservicesDomain', ns) 

的xml.find()永遠不會返回任何東西,但不管選擇或命名空間空值。如果有人能夠向我介紹什麼是正確的方式,所以我可以從這些答覆中獲得這個URL和其他數據,我會很感激。

如果您想知道爲什麼我會以困難的方式做事,而不是使用客戶端或更好的工具。我試圖在使用特定版本的python 3(3.3.6)的sublime文本3中嵌入一些webservice功能,並且導入庫不是不可能,而是一件麻煩事。

回答

0

看起來你應該嘗試:

xml.find('{urn:messages_2016_1.platform.webservices.netsuite.com}webservicesDomain') 

ns = {'nsp': 'urn:messages_2016_1.platform.webservices.netsuite.com'} 
xml.find('nsp:webservicesDomain', ns) 
+0

對不起,我已經超最近比較忙。我會給它一個去看看它是否有效 –