0

我有一个像下面这样的文件。我可以使用 xPath 表达式到达 data-ext

/html/body/ol/li[1]/ol/li[1]/@data-ext 

有什么办法可以获得our_id的值吗?

或者我应该解析string(/html/body/ol/li[1]/ol/li[1]/@data-ext)为一个单独的 json。

<!DOCTYPE html>
<html>
  <head>
    <title>My Title</title>
  </head>
  <body>
    <h1>Contents</h1>
    <ol>
      <li data-ext='{"our_id":"45578107356868511506172578", "our_number":"1"}'>
        <span>Objective 1</span>
      </li>
    </ol> 
  </body>
</html>
4

2 回答 2

1

单独处理 JSON 可能是一种更简洁的方法,具体取决于您可用的工具。但要仅使用 XPath 获得它,您可以使用substring-before()和的组合substring-after()

substring-before(substring-after(string(/html/body/ol/li[1]/@data-ext), 'our_id":"'), '", "our_number"')

这些函数根据参数返回部分字符串。单击他们的名字以获取更多详细信息和参考。

于 2013-09-17T13:58:16.950 回答
-1

不,xpath 和 json 是不同的概念。

如果您尝试使用 xpath 解析 json,您可能会遇到转义序列问题:{"\"our_id":"12345", "our_id":"45578107356868511506172578",...

这就是为什么 xpath 和 json 只能按预期使用。另一个问题是 xpath 不完整,我不确定你是否可以编写一个安全的解析器,但我怀疑即使你这样做也会非常快。

于 2013-09-17T13:50:03.763 回答