3

ATOM xml ドキュメントのサブツリーで要素を検索する動的関数を作成する必要があります。

そうするために、私は次のようなものを書きました:

    tree = etree.parse(xmlFileUrl)
    e = etree.XPathEvaluator(tree, namespaces={'def':'http://www.w3.org/2005/Atom'})
    entries = e('//def:entry')
    for entry in entries:
        mypath = tree.getpath(entry) + "/category"
        category = e(mypath)

上記のコードはカテゴリを見つけることができません。

その理由は、getpath が名前空間なしで XPath を返すのに対し、XPathEvaluator e() は名前空間を必要とするためです。

getpath がパス内の名前空間を返すようにする方法、または XPathEvaluator が名前空間を指定せずに (または、別の方法で指定して) パスを受け入れるようにする方法はありますか?

4

1 に答える 1

2

使用:

*[local-name() = 'category']

Or, if you want to be more precise:

*[local-name() = 'category' and namespace-uri() = 'http://www.w3.org/2005/Atom']

または単に

def:category
于 2012-10-26T18:12:05.270 に答える