如何在Javascript中使用WHERE等效命令查询XML

如何在Javascript中使用WHERE等效命令查询XML,javascript,xml,firefox,where,Javascript,Xml,Firefox,Where,在JavaScript中使用xPath查询XML文件时,我确实需要帮助,其中某个标记=某个数据 比如说: <bookstore> <b1:book> <name>Hungry Teddy</name> <author>Bozo</author</author> <category>fiction</category> </b1:book> <b1:book&g

在JavaScript中使用xPath查询XML文件时,我确实需要帮助,其中某个标记=某个数据

比如说:

<bookstore>
 <b1:book>
  <name>Hungry Teddy</name>
  <author>Bozo</author</author>
  <category>fiction</category>
 </b1:book>
 <b1:book>
  <name>Funny Kangaroo</name>
  <author>Bozo</author</author>
  <category>non-fiction</category>
 </b1:book>
 <b1:book>
  <name>How to JAVA</name>
  <author>umm510</author>
  <category>fiction</category>
 </b1:book>
</bookstore>

饥饿的泰迪

Bozo以下XPath表达式选择与“虚构”类别对应的所有名称:

/bookstore/b1:book[category="fiction"]/name
请注意,上面的文档的名称空间格式不正确,因为前缀b1未绑定到名称空间。这可能是您的代码无法工作的原因。下面是如何修复它的:

<bookstore xmlns:b1="http://www.example.com">
  <b1:book>
    <name>Hungry Teddy</name>
    <author>Bozo</author>
    <category>fiction</category>
  </b1:book>
  <b1:book>
    <name>Funny Kangaroo</name>
    <author>Bozo</author>
    <category>non-fiction</category>
   </b1:book>
   <b1:book>
    <name>How to JAVA</name>
    <author>umm510</author>
    <category>fiction</category>
  </b1:book>
</bookstore>

饥饿的泰迪
博佐
小说
有趣的袋鼠
博佐
非小说类
如何使用JAVA
嗯
小说

编辑:在一些作者标签中也有格式错误

以下XPath表达式选择与“虚构”类别对应的所有名称:

/bookstore/b1:book[category="fiction"]/name
请注意,上面的文档的名称空间格式不正确,因为前缀b1未绑定到名称空间。这可能是您的代码无法工作的原因。下面是如何修复它的:

<bookstore xmlns:b1="http://www.example.com">
  <b1:book>
    <name>Hungry Teddy</name>
    <author>Bozo</author>
    <category>fiction</category>
  </b1:book>
  <b1:book>
    <name>Funny Kangaroo</name>
    <author>Bozo</author>
    <category>non-fiction</category>
   </b1:book>
   <b1:book>
    <name>How to JAVA</name>
    <author>umm510</author>
    <category>fiction</category>
  </b1:book>
</bookstore>

饥饿的泰迪
博佐
小说
有趣的袋鼠
博佐
非小说类
如何使用JAVA
嗯
小说

编辑:在一些作者标签中也有格式错误

这里是第二个问题的尝试,不使用id,假设整个文档只有一个名称。下面是XPath

/asa:AustralianTAFProduct[.//gml:name="MANSFIELD"]//wx:Forecast/om:samplingTime/gml:TimePeriod/gml:beginPosition
将返回以下位置中的所有节点:

/asa:AustralianTAFProduct//wx:Forecast/om:samplingTime/gml:TimePeriod/gml:beginPosition
如果以下为真:

/asa:AustralianTAFProduct//gml:name="MANSFIELD"

否则它将返回一个空序列。

这里是第二个问题的尝试,不使用ID,假设整个文档只有一个名称。下面是XPath

/asa:AustralianTAFProduct[.//gml:name="MANSFIELD"]//wx:Forecast/om:samplingTime/gml:TimePeriod/gml:beginPosition
将返回以下位置中的所有节点:

/asa:AustralianTAFProduct//wx:Forecast/om:samplingTime/gml:TimePeriod/gml:beginPosition
如果以下为真:

/asa:AustralianTAFProduct//gml:name="MANSFIELD"

否则它将返回一个空序列。

没关系,我确实在XML文件中设置了名称空间和URL。不用担心,我只是作为一个例子。我上传了正确的XML文件,但遇到了问题,但无法应用您的path方法,因为条件标记完全位于不同的父标记下…:(我认为XML文件的XPath有点复杂。是否可以将指向命名空间的XML模式的指针绑定到前缀“avwx”上?不知何故,机场的ID必须在机场WxForecast中的某个地方引用,但我找不到where.hmmm哪个或什么是机场ID bro?P.这是一个很大的帮助,兄弟,我感谢你看了我的问题并试一试!很好,我确实在XML文件中设置了名称空间和URL。不用担心,我只是这样做了举个例子。我上传了正确的XML文件,但遇到了问题,但无法应用您的path方法,因为条件标记完全位于不同的父标记下……:(我认为XML文件的XPath有点复杂。是否可以将指向命名空间的XML模式的指针绑定到前缀“avwx"不知怎的,机场的ID必须在机场的某个地方被引用WxForecast,但我找不到在哪里。嗯,哪个或什么是机场ID兄弟?P.这是你的一个很大的帮助兄弟,我感谢你看了我的问题并尝试一下!出于某种奇怪的原因,这在屏幕上没有产生任何结果…也许是因为我不能N在引号中插入引号?我也尝试过使用//“MANSFIELD/”,但仍然没有任何结果……我找到了答案:“/asa:AustralianTAFProduct[.//gml:name=\“MANSFIELD\”]//wx:Forecast/om:samplingTime/gml:TimePeriod/gml:beginPosition”但我还有另一个查询-我将上载同一个xml文件,但有额外的片段……仍然无法让它工作:(我已经更新了XML文件-只是一个小差异,但是我想要满足的条件不能正常工作:(兄弟,还有什么进一步的建议吗?我注意到,如果满足条件,这段代码实际上会得到所有的gml:beginPosition-而不仅仅是与该条件相关的gml:beginPosition标记(即BIRCHIP)…如果“跟随兄弟姐妹”由您的浏览器支持,这可能会起作用:/asa:AustralianTAFProduct/avwx:aidromewxforecast[以下同级::avwx:appliesTo[1]//gml:name=“BIRCHIP”]//wx:Forecast/om:samplingTime/gml:TimePeriod/gml:BeginPosition出于某种奇怪的原因,这在屏幕上没有产生任何结果……可能是因为我不能在引号中插入引号?我也尝试过使用//“MANSFIELD/”,但仍然没有……我找到了答案:“/asa:AustralianTAFProduct[.//gml:name=\“MANSFIELD\”]//wx:Forecast/om:samplingTime/gml:TimePeriod/gml:beginPosition“但我仍有另一个查询-我将上载相同的xml文件,但有额外的片段…仍然无法使其工作:(我已更新了xml文件-只是略有不同,但我希望满足的条件无法正常工作:(兄弟,还有什么进一步的建议吗?我注意到,这段代码实际上是在满足条件的情况下获取所有gml:beginPosition,而不仅仅是与该条件相关的gml:beginPosition标记(即BIRCHIP)……如果浏览器支持“跟随兄弟姐妹”,这可能会起作用:/asa:AustralianTAFProduct/avwx:aidromewxforecast[following sibling::avwx:appliesTo[1]//gml:name=“BIRCHIP”]//wx:Forecast/om:samplingTime/gml:TimePeriod/gml:beginPosition