如何编写多条件多层级XPath从XML中提取DocIDAutoNumerator值
正确XPath语句
//Document[.//Field[Code='DocumentTypeValue' and Value='1319'] and .//ActivityTime[contains(normalize-space(.), '2021-08-11')]]//Field[Code='DocIDAutoNumerator']/Value
逻辑说明
- 定位所有
<Document>节点,对每个节点做两个条件校验:
- 节点后代存在
<Field>节点,其<Code>值为DocumentTypeValue且<Value>值为1319 - 节点后代存在
<ActivityTime>节点,去除首尾空白字符后包含指定日期2021-08-11(加normalize-space是为了兼容XML中节点值前后多余空格的情况)
- 对满足条件的
<Document>节点,直接查找后代中<Code>为DocIDAutoNumerator的<Field>节点的<Value>值即可。
测试说明
用你提供的示例XML测试时不会返回结果,因为示例中没有同时满足两个条件的<Document>:第一个<Document>日期符合要求但文档类型值为4008,第二个文档类型值符合要求但日期为1993-08-11,调整测试数据后即可验证逻辑正确性。
内容的提问来源于stack exchange,提问作者FM_Bendo
相关产品推荐
相关产品推荐

