【问题标题】:xpath where clausexpath where 子句
【发布时间】:2012-12-26 15:57:21
【问题描述】:

我正在尝试在以下 xml 文件上构建 xpath 查询:

<recordGroup>
    <records>
        <year>1985</year>   
        <album>
            <name> album1 </name>
            <artist>artist1 </artist>
            <label> labelA</label>
        </album>    
        <album>
            <name>album2 </name>
            <artist>artist2 </artist>
            <label> labelB</label>
        </album>    
    </records>      
    <records>
        <year>1986</year>   
        <album>
            <name>album3 </name>
            <artist> artist1 </artist>
            <label>labelC</label>
        </album>    
        <album>
            <name>album4 </name>
            <artist>artist2</artist>
            <label> labelA</label>
        </album>    
    </records>

</recordGroup>

我想检索以下查询:选择 label = 'LabelA' 的所有记录(艺术家、姓名和年份)。

XML 结构可能不适合显示此数据,但我从另一个软件获取此流,所以我无法更改它。

有什么建议吗?

【问题讨论】:

    标签: xml xpath


    【解决方案1】:

    这将带回包含标签为 labelA

    的专辑的完整 records
    //records[album/label='labelA']
    

    你也可以使用

    //records[album/label='labelA']/*[self::year or self::album[label='labelA']]
    

    这将只返回与 labelA 匹配的 year 和完整的 album

    【讨论】:

    • 我想出了一个非常讨厌的解决方案,我不会使用它,因为您的解决方案看起来比我的更有效。非常感谢!
    【解决方案2】:

    试试这个:

    var = doc(/recordGroup/records[album[@label="LabelA"]]);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      • 2015-04-21
      • 2012-04-23
      • 2019-08-22
      • 2011-01-27
      • 1970-01-01
      相关资源
      最近更新 更多