2

ここの公式ドキュメントには、「一致はタグ名またはパスである可能性があります」と書かれていますが、「パス」の定義はどこにも見当たりません。Web上の例を見ると、XPathのような表記法がいくつか削除されていることがわかりますが、何が許可されているのか正確にはわかりません。たとえば、パスを区切り文字なしで/開始する必要がありますか?//属性を指定できます[@att = "value"]か?

4

1 に答える 1

3

さて、 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には、より更新されたテーブルがあります。見た目はあまり変わりません。

于 2012-07-30T23:50:50.803 に答える