2012-05-02 29 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コマンドを使用すると、名前空間接頭辞マッピングを提供できます。これはとまったく同じであることを

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'}) 

、名前空間接頭辞 doesnのですたとえば、XPathを使用して、ドキュメント内のEnvelope要素を見つけるために、あなたはこれを行うことができますソースXML文書で使用されているものと一致する必要があります。絶対名前空間だけが重要です。

LXMLと名前空間の詳細については、hereを参照してください。

関連する問題