Javascript defiant.js节点中带空格的XPath表达式
我正在使用搜索json。根据他们的文档,我需要提供xpath来从json中搜索特定元素。当节点中没有空白时,我成功地使用了它。但是我的json现在包含空白。这是我的csv。我想买一件带有特定证书号的物品Javascript defiant.js节点中带空格的XPath表达式,javascript,jquery,json,xpath,Javascript,Jquery,Json,Xpath,我正在使用搜索json。根据他们的文档,我需要提供xpath来从json中搜索特定元素。当节点中没有空白时,我成功地使用了它。但是我的json现在包含空白。这是我的csv。我想买一件带有特定证书号的物品 [ { "Certificate Number":1019174, "Last Name":"MA", "First Name":"SHI", "Title":"MR", "DOB":"1/28/1990", "Address":"75
[
{
"Certificate Number":1019174,
"Last Name":"MA",
"First Name":"SHI",
"Title":"MR",
"DOB":"1/28/1990",
"Address":"75 LEYLAND HOUSE",
"City":"London",
"Postal Code":"E14 0BU",
"Country":"UK",
"Passpot Number":"E0438750",
"Course Level":7,
"Course Details":"POST GRADUATE DIPLOMA IN INTERNATIONAL COMMERCIAL LAW",
"Course Start Date":"2/2/2014",
"Course End Date":"2/23/2015",
"Note":"RPL Route Entry",
"Remarks":""
},
{
"Certificate Number":101235,
"Last Name":"UD",
"First Name":"HAN",
"Title":"MR",
"DOB":"1/28/1990",
"Address":"75 LEYLAND HOUSE",
"City":"London",
"Postal Code":"E14 0BU",
"Country":"UK",
"Passpot Number":"E0438750",
"Course Level":7,
"Course Details":"POST GRADUATE DIPLOMA IN INTERNATIONAL COMMERCIAL LAW",
"Course Start Date":"2/2/2014",
"Course End Date":"2/23/2015",
"Note":"RPL Route Entry",
"Remarks":""
}
]
我的xpath是
//[Certificate Number="101234"]
当属性名类似CertificateNumber时,我可以轻松找到该项。但由于证书和编号之间有空格,我无法获取该项目。那么,如何从这个json获取具有特定证书号的项目呢。除了Deviant.js之外的任何替代解决方案都可以。有了JSONPath,您应该能够使用它
//Certificate Number="101235"
无需使用
[]
似乎作为XML节点名无效的JSON属性(因为它们包含空格)正在通过definant.js转换为命名空间中的XML属性
例如,JSON的这一部分..:
{
"Certificate Number":101235,
"Last Name":"UD",
"First Name":"HAN",
"Title":"MR",
"DOB":"1/28/1990",
"Address":"75 LEYLAND HOUSE",
"City":"London",
"Postal Code":"E14 0BU",
"Country":"UK",
"Passpot Number":"E0438750",
"Course Level":7,
"Course Details":"POST GRADUATE DIPLOMA IN INTERNATIONAL COMMERCIAL LAW",
"Course Start Date":"2/2/2014",
"Course End Date":"2/23/2015",
"Note":"RPL Route Entry",
"Remarks":""
}
…正在转换为以下XML结构(仅此处发布的XML的相关部分):
XPath是一种用于导航XML的语言,而不是JSON。要浏览JSON,您必须使用JSONPath。您能给我一个解决方案,说明我在使用defiant.jsHm时面临的问题吗,很有趣
/[Certificate Number=“101234”]
不是有效的XPath表达式,我怀疑它是否适用于CertificateNumber
(没有空格的表达式)。请显示适用于CertificateNumber
的XPath表达式,正如您所声称的那样。//*[CertificateNumber=“101234”]。。。这就是表达。我还从json文件中删除了证书号的空格。。然后它在json和xpath中都可以正常工作,因为没有空格。很好,请尝试/*[*[translate(name(),'','')='CertificateNumber']=“101234”]
-如果这不起作用,我建议您改用JSONPath。我不得不说,这是一个有趣的库+1.你能解释一下你的xpath吗?这对我来说太好了。
<d:item xmlns:d="defiant-namespace" d:mi="34">
<d:name d:name="Certificate Number" d:constr="Number" d:mi="18">101235</d:name>
<d:name d:name="Last Name" d:constr="String" d:mi="19">UD</d:name>
<d:name d:name="First Name" d:constr="String" d:mi="20">HAN</d:name>
<Title d:constr="String" d:mi="21">MR</Title>
<DOB d:constr="String" d:mi="22">1/28/1990</DOB>
<Address d:constr="String" d:mi="23">75 LEYLAND HOUSE</Address>
<City d:constr="String" d:mi="24">London</City>
<d:name d:name="Postal Code" d:constr="String" d:mi="25">E14 0BU</d:name>
<Country d:constr="String" d:mi="26">UK</Country>
<d:name d:name="Passpot Number" d:constr="String" d:mi="27">E0438750</d:name>
<d:name d:name="Course Level" d:constr="Number" d:mi="28">7</d:name>
<d:name d:name="Course Details" d:constr="String" d:mi="29">POST GRADUATE DIPLOMA IN INTERNATIONAL COMMERCIAL LAW</d:name>
<d:name d:name="Course Start Date" d:constr="String" d:mi="30">2/2/2014</d:name>
<d:name d:name="Course End Date" d:constr="String" d:mi="31">2/23/2015</d:name>
<Note d:constr="String" d:mi="32">RPL Route Entry</Note>
<Remarks d:constr="String" d:mi="33"/>
</d:item>
//*[*[@*="Certificate Number" and .=101235]]