1
path4 = file.xpath('/p:sld/p:cSld/p:spTree/p:sp/p:nvSpPr/p:nvPr/p:ph[@type="body"][@sz="quarter"][@marL=True]', namespaces={'p':'http://schemas.openxmlformats.org/presentationml/2006/main',
            'a':'http://schemas.openxmlformats.org/drawingml/2006/main'})

これは、解析済みの xml ファイルに使用しているパスです。私は usingx.hasAttribute('marL') == True:を使用して いましたが、 という属性が含まれているかどうかを確認するために inをElementTree使用する方法がわかりません。上記を試しましたが、動作が悪く、lxmlの例でも見つかりませんでした。上記のインスタンスでのlxml の機能またはその使用方法を提案できますか?hasAttributelxmlp:phmarLhasAttribute

どんな助けでも大歓迎です!!

4

2 に答える 2

1

属性が存在するための xpath 述語は単純です:[@marL] したがって、試してください:

'/p:sld/p:cSld/p:spTree/p:sp/p:nvSpPr/p:nvPr/p:ph[@type="body"][@sz="quarter"][@marL]'

また:

'/p:sld/p:cSld/p:spTree/p:sp/p:nvSpPr/p:nvPr/p:ph[@type="body" and  @sz="quarter"  and  @marL]'

述語の詳細については、こちらの例を参照してください。
"employee[@secretary and @assistant]秘書属性とアシスタント属性の両方を持つコンテキスト ノードのすべての従業員の子を選択します"

于 2013-06-03T13:52:28.220 に答える
0

試す

path4 = file.xpath('boolean(/p:sld/p:cSld/p:spTree/p:sp/p:nvSpPr/p:nvPr/p:ph[@type="body"][@sz="quarter"]/@marL)', namespaces={'p':'http://schemas.openxmlformats.org/presentationml/2006/main',
            'a':'http://schemas.openxmlformats.org/drawingml/2006/main'})
于 2013-06-03T13:03:49.220 に答える