我真的被這個困住了!我從亞馬遜獲得一些產品數據,這些數據以XML形式返回。當搜索關鍵字有效時,它會返回XML節點Items
>Item
。如果關鍵字錯誤,或者沒有返回有效結果的關鍵字,則不存在Item
節點。我正在使用一些函數將這個XML轉換爲對象以便於解析。然後使用hasattr
遞歸檢查各個節點。方法'hasattr'沒有正確測試屬性?
data = someXMLConverter(xml)
#works
if hasattr(data, 'Items'):
#doesn't work
if hasattr(data.Items, 'Item'):
#some processing here
else:
return 'Error'
else:
return 'Error'
即使Item
節點不存在,hasattr
返回true。所以如果發生錯誤,我的網站會爆炸!
任何想法?
示例XML:
<ItemSearchResponse>
<OperationRequest>
<HTTPHeaders><Header Name="UserAgent" Value="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0"/></HTTPHeaders>
<RequestId>a393e9db-b86e-41de-965d-922c947056ff</RequestId>
<Arguments>
<Argument Name="Operation" Value="ItemSearch"/>
<Argument Name="Service" Value="AWSECommerceService"/>
<Argument Name="Signature" Value="z/R9HjzqukC6J53bmF4LPxh/xtlwBv9k+u6QjGsgFmA="/>
<Argument Name="ItemPage" Value="1"/>
<Argument Name="AssociateTag" Value="rutwsblog-20"/>
<Argument Name="Version" Value="2006-09-11"/>
<Argument Name="Keywords" Value="dggd"/>
<Argument Name="AWSAccessKeyId" Value="AKIAJ3TAUM7ANQFQYP7Q"/>
<Argument Name="Timestamp" Value="2013-05-17T16:50:55"/>
<Argument Name="ResponseGroup" Value="Medium"/>
<Argument Name="SearchIndex" Value="Books"/>
</Arguments>
<RequestProcessingTime>0.0217790000000000</RequestProcessingTime>
</OperationRequest>
<Items>
<Request>
<IsValid>True</IsValid>
<ItemSearchRequest>
<ItemPage>1</ItemPage>
<Keywords>dggd</Keywords>
<ResponseGroup>Medium</ResponseGroup>
<SearchIndex>Books</SearchIndex>
</ItemSearchRequest>
<Errors>
<Error>
<Code>AWS.ECommerceService.NoExactMatches</Code>
<Message>We did not find any matches for your request.</Message>
</Error>
</Errors>
</Request>
<TotalResults>0</TotalResults>
<TotalPages>0</TotalPages>
<MoreSearchResultsUrl>http://www.amazon.com/gp/redirect.html?camp=2025&creative=386001&location=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fsearch%3Fkeywords%3Ddggd%26url%3Dsearch-alias%253Dstripbooks&linkCode=xm2&tag=xxxx-20&SubscriptionId=xxxx</MoreSearchResultsUrl>
</Items>
</ItemSearchResponse>
這些是什麼類型的對象?換句話說,你使用的是什麼XML API? –
什麼是確切的代碼和追溯?這可能是你對錯誤發生的分析。 –
不是API,而是我在網站上找到的一些自定義功能。 2年前,當我創建應用程序時,我找不到任何能正確轉換Amazon XML的庫! –