【发布时间】:2016-12-30 14:57:48
【问题描述】:
我有一个大的 json blob,我想根据表单中的参数来解析和过滤 baser。 经过一些研究后,我决定尝试 defiantjs,但在使用 XPath 时我遇到了一些问题,因为它会使我的树变平。
我的数据如下所示:
<d:item d:mi="36">
<name d:constr="String" d:mi="15">/Vip/myvip</name>
<irules d:mi="23">
<name d:constr="String" d:mi="22">abcde</name>
</irules>
<irules d:mi="25">
<name d:constr="String" d:mi="24">fgh</name>
</irules>
<irules d:mi="27">
<name d:constr="String" d:mi="26">ijkl</name>
</irules>
</d:item>
<d:item d:mi="37">
<name d:constr="String" d:mi="15">myitem2</name>
<irules d:mi="23">
<name d:constr="String" d:mi="22">mnop</name>
</irules>
<irules d:mi="25">
<name d:constr="String" d:mi="24">qrst</name>
</irules>
</d:item>
有什么方法可以搜索ie。包含“fgh”的 irules 节点?在下面的情况下,我只会得到第一项:
<d:item d:mi="36">
<name d:constr="String" d:mi="15">/Vip/myvip</name>
<irules d:mi="23">
<name d:constr="String" d:mi="22">abcde</name>
</irules>
<irules d:mi="25">
<name d:constr="String" d:mi="24">fgh</name>
</irules>
<irules d:mi="27">
<name d:constr="String" d:mi="26">ijkl</name>
</irules>
我确实摆弄了一些查询,但只能在第一个 irules 节点 (?) 上获得成功,而在随后的节点上却没有。
额外问题:
关于使用 javascript (~12MB) 解析大量 json 数据的任何其他建议?
/帕特里克
【问题讨论】:
-
为什么是 XML?没有人使用它。使用 JSON
-
额外评论:你自己试过什么?
-
@patrikj 您需要获取项目节点的路径吗?您尝试了哪个 xpath?
-
@Jonasw 我是。但是 defiantjs 正在将其转换为 xml 以便能够将 XPath 应用于它
-
@eLRuLL 正确 这是我最接近的 '//virtualserver[contains(./irules, "whatIwanttofind")]' (defiantjs 以 // 开始查询)但是它只会返回对象其中列表顶部的规则包含“whatIwanttofind”。
标签: javascript json xml xpath