我有一份如下文件。我可以使用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>
答案 0 :(得分:1)
单独处理JSON可能是一种更简洁的方法,特别取决于您可用的工具。但是为了仅使用XPath,您可以使用substring-before()
和substring-after()
的组合:
substring-before(substring-after(string(/html/body/ol/li[1]/@data-ext), 'our_id":"'), '", "our_number"')
这些函数根据参数返回字符串的部分内容。单击其名称以获取更多详细信息和参考。
答案 1 :(得分:-1)
不,xpath和json是不同的概念。
如果您尝试使用xpath解析json,则可能会遇到转义序列的问题:{"\"our_id":"12345", "our_id":"45578107356868511506172578",...
这就是为什么只应该使用xpath和json的原因。另一个问题是xpath没有完成,我不确定你是否可以编写一个安全的解析器,但我怀疑即使你这样做也会非常快。