【问题标题】:Extract coordinates out of xml with xpath and some criterias使用 xpath 和一些标准从 xml 中提取坐标
【发布时间】:2014-11-20 16:50:15
【问题描述】:

我花了几个小时寻找解决方案,但现在我需要你的帮助。也许你会拿我开玩笑,但是……无论如何。 当 xpath 与 crtiteria value=bnb 匹配时,我想获取坐标和一些其他信息

我尝试了语法 //Data/value['bnb']/ancestor::Point/coordinates[text()] 没有结果。

      <Placemark xmlns="">
    <name><![CDATA[Malcesine]]></name>
    <Point>
      <coordinates>10.8103913069,45.7645853643</coordinates>
    </Point>
    <ExtendedData>
      <Data name="tournumber">
        <value>1</value>
      </Data>
      <Data name="guidename">
        <value>Lake Garda</value>
      </Data>
      <Data name="category">
        <value>numeration</value>
      </Data>
      <Data name="category">
        <value>bnb</value>
      </Data>
      <Data name="WayPointNumber">
        <value>3</value>
      </Data>
    </ExtendedData>
  </Placemark>
  <Placemark xmlns="">
    <name><![CDATA[Gelateria Cento per cento]]></name>
    <Point>
      <coordinates>10.8087927103,45.7659774682</coordinates>
    </Point>
    <ExtendedData>
      <Data name="tournumber">
        <value>1</value>
      </Data>
      <Data name="guidename">
        <value>Lake Garda</value>
      </Data>
      <Data name="WayPointNumber">
        <value>3</value>
      </Data>
    </ExtendedData>
  </Placemark>

提前谢谢

【问题讨论】:

    标签: xml xpath


    【解决方案1】:

    不要尝试使用ancestor:: 回到树上,而是将谓词放在Placemark...

    //Placemark[ExtendedData/Data/value='bnb']/Point/coordinates
    

    大多数情况下,直接创建元素的路径然后添加谓词进行过滤会更容易。所以你会从//Placemark/Point/coordinates开始。然后将其缩小到PlacemarkExtendedData/Data/value 等于bnb

    【讨论】:

    • 酷!以及如何添加更多标准: //Placemark[ExtendedData/Data/value='bnb' and @name='WayPointNumber']/Point/coordinates ??
    • @happymapper - 是的,但要注意上下文。 Placemark 没有名为 name 的属性,但 Data 有,因此您必须在 Data 上放置一个谓词。
    • 感谢您的建议 - 今天时间不多了,我明天试试。
    • 它变得越来越棘手 - 只有当 3 个标准为真时,我才需要坐标。例如:Data[@name='bnb'] 和 Data[@name='WayPointNumber'] 和 Data/value='numeration'。如何将这些添加到我的 xpath 语法中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    • 2014-02-13
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多