5

xpathgetpath()で完全なタグ名を返すようにするか、回避策を見つけるのを手伝ってくださいgetpath()

の要素へのxpathを生成しようとしていlxml.etree._ElementTreeます。ElementTreeいくつかの本番Webサービスからの600Kb応答を解析することによって生成されます。

print elem.getroottree().getpath(elem)

これが私が得た結果です:

'/S:Envelope/S:Body/ns5:getPhysicalResponse/*[18]/*[12]/*[6]/*[2]'

残念ながら、元のxmlを投稿することはできません。独自の顧客情報が含まれています。また、100個のネストされたレベルを持つ自動生成された単純な要素ツリーでこの結果を再現しようとしました。各レベルには100個の子がありますが、運がありませんgetpath()。完全なタグ名でxpathが返されます。

lxmlソースコード を調べて更新tree.h xmlGetNodePathします-ライブラリのメソッドを指しlibxml2ます。つまり、これは実際libxml2の動作です。

更新 さらにテストを行うと、タグにデフォルト以外の名前空間があるたびにこれが発生することがわかりました。

4

1 に答える 1

1

好きなように名前空間を使用getelementpath()して後処理します。

于 2016-12-16T07:50:00.533 に答える