如何搜索XML中的特定属性以检索另一个属性?
问题描述:
实际上,我正在尝试使用Google Maps JavaScript API来从我的数据库生成特定的标记,以便以自动完成形式使用它。 我无法将我的标记保存在Google地方信息中,因为它们的数量太多了,它们不会真正适合所有人!但是,Google并不知道我所有的地方,所以无法对其进行地理编码。 我决定用我的标记生成一个XML文件;这里是一个示例:如何搜索XML中的特定属性以检索另一个属性?
<?xml version="1.0"?>
<markers>
<marker name="Pan Africa Market" address="1521 1st Ave, Seattle, WA" lat="47.608940" lng="-122.340141" type="restaurant"/>
<marker name="Buddha Thai & Bar" address="2222 2nd Ave, Seattle, WA" lat="47.613590" lng="-122.344391" type="bar"/>
<marker name="The Melting Pot" address="14 Mercer St, Seattle, WA" lat="47.624561" lng="-122.356445" type="restaurant"/>
<marker name="Ipanema Grill" address="1225 1st Ave, Seattle, WA" lat="47.606365" lng="-122.337654" type="restaurant"/>
<marker name="Sake House" address="2230 1st Ave, Seattle, WA" lat="47.612823" lng="-122.345673" type="bar"/>
<marker name="Crab Pot" address="1301 Alaskan Way, Seattle, WA" lat="47.605961" lng="-122.340363" type="restaurant"/>
<marker name="Mama's Mexican Kitchen" address="2234 2nd Ave, Seattle, WA" lat="47.613976" lng="-122.345467" type="bar"/>
<marker name="Wingdome" address="1416 E Olive Way, Seattle, WA" lat="47.617214" lng="-122.326584" type="bar"/>
<marker name="Piroshky Piroshky" address="1908 Pike pl, Seattle, WA" lat="47.610126" lng="-122.342834" type="restaurant"/>
</markers>
我如何使用JavaScript,以便检索特定名称属性lat
和lng
属性?
答
您可以使用以下XPath表达式:
/markers/marker[@name='Crab Pot']/@lng
/markers/marker[@name='Crab Pot']/@lat
从Chrome开发人员工具:
$x("/markers/marker[@name='Crab Pot']/@lat")
或以编程方式使用Document.evaluate()
在JavaScript:
console.log(document.evaluate("/markers/marker[@name='Crab Pot']/@lat",
document, null, XPathResult.FIRST_ORDERED_NODE_TYPE,
null).singleNodeValue);
谢谢你,真的有用 – Yvo