【发布时间】:2015-03-27 07:48:32
【问题描述】:
我有一个包含表格信息(列标题和行)的 XML。
<Table>
<colHeading>name</colHeading>
<colHeading>phoneNumber</colHeading>
<colHeading>email</colHeading>
<row>
<col>jack</col>
<col>9123456352</col>
<col>asd@abc.com</col>
</row>
</Table>
我需要从 XML 中识别 phoneNumber 值。 订单/列名是动态的,因此硬编码的索引值将不起作用。即,首先获取值为“phoneNumber”的columHeading 索引,然后选择row/col[index] 值。为此,我编写了一个工作正常的 Xpath 表达式,如果有 phoneNumber 列,则返回正确的值。
.//row/col[count(//colHeading[text() = 'phoneNumbr']/preceding-sibling::*)+1]/text()
我面临的问题是,当没有 phoneNumber 列时,它将始终返回第一行/列值,因为我将 +1 添加到前一个兄弟值。
如何在 xpath 中处理这种情况。即如果“phoneNumber”存在,那么只有我应该识别兄弟姐妹并添加1。否则它应该返回0作为索引。 xpath 中是否有任何函数可以用来处理这种情况。我正在使用 XPATH1.0。
【问题讨论】:
-
这样如果 phoneNumber 不存在 row/col[0] 将不会返回任何值