【问题标题】:Find XPATH with namespace based on attribute element根据属性元素查找具有命名空间的 XPATH
【发布时间】:2012-02-19 23:39:52
【问题描述】:

我有以下 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" 引用资产?

【问题讨论】:

    标签: python xml xpath lxml


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      试试这个

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

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

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

      看看这里xpath synatx

      【讨论】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-10-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多