lxml
を使用して、XMLを生成して解析するにはどうすればよいですか?lxmlを使用してXML要素名に「:」を使用するにはどうすればよいですか?
<s:Envelope xmlns:s="a" xmlns:a="http_//www.w3.org/2005/08/addressing">
....
</s:Envelope>
私は現在、スワップ:私は解析およびXMLを生成するときの要素名に_と、それは愚かなようです。
lxml
を使用して、XMLを生成して解析するにはどうすればよいですか?lxmlを使用してXML要素名に「:」を使用するにはどうすればよいですか?
<s:Envelope xmlns:s="a" xmlns:a="http_//www.w3.org/2005/08/addressing">
....
</s:Envelope>
私は現在、スワップ:私は解析およびXMLを生成するときの要素名に_と、それは愚かなようです。
それはあなたが求めている正確に何明確ではないですが、多分これは役立ちます:
など<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を参照してください。