2012-05-02 97 views

回答

7

目前尚不清楚究竟你問什麼,但也許這將幫助:

的元素,如<s:Envelope>使用XML命名空間前綴。這用於表示本文檔中的s:Envelope屬性在a命名空間中定義。

LXML表示使用在大括號中命名空間前綴,例如XML名稱空間:{a}Envelope。你的榜樣文件是有點令人困惑,因爲你還明確了a:命名空間前綴,所以:

  • a:Element相當於{http://www.w3.org/2005/08/addressing}Element,並
  • s:Element相當於{a}Element

許多LXML命令讓你提供一個命名空間前綴映射。例如,要查找您的文檔使用XPATH的Envelope元素,你可以這樣做:

import lxml.etree as etree 
doc = etree.parse('mydocument.xml') 
envelope = doc.xpath('//s:Envelope', 
    namespaces={'s': 'a'}) 

注意,這是完全等同於:

envelope = doc.xpath('//x:Envelope', 
    namespaces={'x': 'a'}) 

也就是說,命名空間前綴沒有按不必與源XML文檔中使用的內容匹配;只有絕對命名空間很重要。

你可以閱讀更多關於LXML和命名空間here

相關問題