XPATH选择具有多个子值部分匹配的节点

时间:2012-11-28 03:04:20

标签: php xml xpath

我想选择具有特定值的少数孩子的元素。这是xml的例子:`

<events>
  <event>
    <startDateTime>2012-12-0128090</startDateTime>
    <homeTeam>
      <name>TEST123</name>
    </homeTeam>
  </event>
</events>`

我想要的结果是event,包含值为2012-12-01的startDateTime,并包含homeTeam / Name的TEST值。

我这样想:

//events/event[startDateTime[contains(.,'2012-12-01')] and homeTeam/name[contains(.,'TEST')]]');

这也返回了starDateTime与指定不同的事件。

提前致谢。

1 个答案:

答案 0 :(得分:2)

我稍微调整了你的XML和XPath

<events>
    <event>
        <startDateTime>2012-12-0128090</startDateTime>
        <homeTeam>
            <name>TEST123</name>
        </homeTeam>
    </event>
    <event>
        <startDateTime>*2013-12-0128090*</startDateTime>
        <homeTeam>
            <name>TEST123</name>
        </homeTeam>
    </event>
</events>

然后我使用以下XPath访问第二个节点:

//events/event[(startDateTime[contains(.,'2013-12-01')]) and (homeTeam/name[contains(.,'TEST')])]

我还用不同的名称值测试了它,它似乎工作正常。