defiant.js 的节点中带有白色 space 的 XPath 表达式
XPath expression with white space in node for defiant.js
我正在使用 defiant.js 搜索 json。根据他们的文档,我需要提供 xpath 来从 json 中搜索特定元素。当节点中没有白色 space 时,我成功了。但是我的 json 现在包含白色 space。这是我的 csv。我想得到一个带有特定证书编号的项目。
[
{
"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 时,我可以毫无问题地找到该项目。但是在证书和号码之间 space 我无法获得该项目。那么我怎样才能从这个 json 中获得具有特定证书编号的项目。 defiant.js 以外的任何替代解决方案都可以。
有了 JSONPath,您应该可以使用
//Certificate Number="101235"
不需要[]
似乎作为 XML 节点名称无效的 JSON 属性(因为它们包含 space),它们正在转换为 XML 属性名称 space 来自 defiant.js。
比如你的这部分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 的相关部分):
<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>
所以根据 XML 结构,这是通过 "Certificate Number" 值获取上述元素的一种可能的 XPath :
//*[*[@*="Certificate Number" and .=101235]]
我正在使用 defiant.js 搜索 json。根据他们的文档,我需要提供 xpath 来从 json 中搜索特定元素。当节点中没有白色 space 时,我成功了。但是我的 json 现在包含白色 space。这是我的 csv。我想得到一个带有特定证书编号的项目。
[
{
"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 时,我可以毫无问题地找到该项目。但是在证书和号码之间 space 我无法获得该项目。那么我怎样才能从这个 json 中获得具有特定证书编号的项目。 defiant.js 以外的任何替代解决方案都可以。
有了 JSONPath,您应该可以使用
//Certificate Number="101235"
不需要[]
似乎作为 XML 节点名称无效的 JSON 属性(因为它们包含 space),它们正在转换为 XML 属性名称 space 来自 defiant.js。
比如你的这部分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 的相关部分):
<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>
所以根据 XML 结构,这是通过 "Certificate Number" 值获取上述元素的一种可能的 XPath :
//*[*[@*="Certificate Number" and .=101235]]