//[dataOptions[id]]
似乎有用
但//[dataOptions[id=value]]
不起作用
我想让dataOptions
的所有父母dataOptions.id
等于val
。第二个有效吗?我怀疑我用来解决查询的JPath有一个bug。但我不确定我的查询是否有效。
[
{
"dataOptions": {
"id": "id1",
"count": "10"
},
"name": "Leon",
"children": [
{
"dataOptions": {
"id": "id2",
"count": "10"
},
"name": "Leon",
"children": [],
"isExpanded": false
},
{
"dataOptions": {
"id": "id2",
"count": "10"
},
"name": "Leon",
"children": [],
"isExpanded": false
}
],
"isExpanded": false
},
{
"dataOptions": {
"id": "id3",
"count": "10"
},
"name": "Leon",
"children": [],
"isExpanded": false
},
{
"dataOptions": {
"id": "id4",
"count": "10"
},
"name": "Leon",
"children": [],
"isExpanded": false
}
答案 0 :(得分:2)
//[dataOptions[id]]
似乎有用但
//[dataOptions[id=value]]
不起作用
这些都是非法语法(谓词前面必须有节点 - 测试)。
我想让
dataOption
的所有父母在哪里dataOptions.id
等于val
。
使用强>:
//*[dataOptions[id=val]]
这将选择具有dataOptions
和id
个孩子具有相同刺痛价值的子元素val
的所有元素。
或使用val
不是元素名称而是文字字符串,然后使用:
//*[dataOptions[id='val']]
更新:OP在最初询问后3小时编辑了问题 - now 我们看到输入是JSON。 XPath不了解JSON - 它只对XML文档进行操作。因此,不应将此问题标记为XPath。
答案 1 :(得分:1)
我有没有可以查看您尝试使用JPath的JSON数据的地方?
您也可以尝试使用查询数据的链式方法。
var jp = new Path(JSONDATA);
jp.$('dataOptions').$(function(n){
return( n.$('id').json == yourvalue );
}).json;
JPath的XPath部分只是使用一些正则表达式来创建上面的代码。
答案 2 :(得分:1)
ShaggyInjun, 我认为你正在寻找与以下内容相符的内容:
//dataOptions[id]
//dataOptions[id="id2"]
我最近编写了一个名为“defiant.js”的js-lib - 可以使用XPath对JSON结构进行查询。在此上下文中 - 我已在此页面粘贴您的JSON数据:
http://www.defiantjs.com/#xpath_evaluator
...并在视觉上测试了不同的XPath查询结构。评估者突出显示JSON及其XML对应的匹配。
我希望你找到“defiant.js”及其网站有用。