ここの公式ドキュメントには、「一致はタグ名またはパスである可能性があります」と書かれていますが、「パス」の定義はどこにも見当たりません。Web上の例を見ると、XPathのような表記法がいくつか削除されていることがわかりますが、何が許可されているのか正確にはわかりません。たとえば、パスを区切り文字なしで/
開始する必要がありますか?//
属性を指定できます[@att = "value"]
か?
1 に答える
さて、 http://hg.python.org/cpython/file/2.7/Lib/xml/etree/ElementTree.pyのソース コードを見ると、次のようElement.find
に実装されていることがわかります。
def find(self, path, namespaces=None):
return ElementPath.find(self, path, namespaces)
ElementPath
として実装されています
try:
from . import ElementPath
except ImportError:
ElementPath = _SimpleElementPath()
_SimpleElementPath
タグ名のみをチェック:
# emulate pre-1.2 find/findtext/findall behaviour
def find(self, element, tag, namespaces=None):
for elem in element:
if elem.tag == tag:
return elem
return None
ElementPath.py を見てみましょう: http://hg.python.org/cpython/file/f98e2944cb40/Lib/xml/etree/ElementPath.py
# limited xpath support for element trees
したがって、有効な XPath は の有効な引数である可能性が高いと思いますfind
。XPath が何をサポートしているのかを正確に判断するには、私は XPath に精通していませんが、http://effbot.org/zone/element-xpath.htmには、 5 年前に XPath がどれだけサポートされたかが記述されており、構文の表が含まれています。
ElementTree は、XPath 式の限定的なサポートを提供します。目標は、省略された構文の小さなサブセットをサポートすることです。完全な XPath エンジンは、コア ライブラリの範囲外です。
http://docs.python.org/dev/library/xml.etree.elementtree.html#xpath-supportには、より更新されたテーブルがあります。見た目はあまり変わりません。