使用基于属性元素的命名空间查找XPATH

时间:2012-02-19 23:39:53

标签: python xml xpath lxml

我有以下xml:

<assets>
    <asset type="full">
        <file_name>WME__HD_2CH_EN_16X9_178_2398_FINAL.mov</file_name>
    </asset>
    ...
</assets>

我有多个asset块,因此我需要引用属性type = "full"。这就是我目前所有人都要参考的内容 -

node.xpath("//t:assets/t:asset/t:file_name/text()", 
            namespaces={'t':'http://apple.com/itunes/importer'})

我如何使用type = "full"

引用资产?

3 个答案:

答案 0 :(得分:2)

您可以将[@type="full"]属性选择器添加到t:asset

node.xpath("//t:assets/t:asset[@type='full']/t:file_name/text()", 
        namespaces={'t':'http://apple.com/itunes/importer'})

答案 1 :(得分:1)

试试这个

node.xpath("//t:assets/t:asset[@type='full']/t:file_name/text()", 
        namespaces={'t':'http://apple.com/itunes/importer'})

@表示法用于通过xpath选择属性。

因此,t:asset[@type='full']表示选择具有属性asset和值type的所有full元素。

看看xpath synatx

答案 2 :(得分:0)

node.xpath("//t:assets/t:asset[@type='full']/t:file_name/text()", 
        namespaces={'t':'http://apple.com/itunes/importer'})