1

我有一个示例 XML 片段,如下所示

<asdiOutput xmlns="http://tfm.faa.gov/tfms/TFMS_XIS" xmlns:nxce="http://tfm.faa.gov/tfms/NasXCoreElements" 
    xmlns:mmd="http://tfm.faa.gov/tfms/MessageMetaData" 
    xmlns:nxcm="http://tfm.faa.gov/tfms/NasXCommonMessages" 
    xmlns:idr="http://tfm.faa.gov/tfms/TFMS_IDRS" 
    xmlns:xis="http://tfm.faa.gov/tfms/TFMS_XIS"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://tfm.faa.gov/tfms/TFMS_XIS http://localhost:58489/tfms/schema/TFMS_XIS.xsd" 
    timestamp="2011-03-15T23:57:59Z">
  <asdiMessage sourceFacility="CCZM" sourceTimeStamp="2011-03-15T23:57:27Z" trigger="TZ">
    <trackInformation>
      <nxcm:aircraftId>UAL966</nxcm:aircraftId>
      <nxcm:speed>470</nxcm:speed>
      <nxcm:reportedAltitude>
        <nxce:assignedAltitude>
          <nxce:simpleAltitude>350</nxce:simpleAltitude>
        </nxce:assignedAltitude>
      </nxcm:reportedAltitude>
      <nxcm:position>
        <nxce:latitude>
          <nxce:latitudeDMS degrees="45" minutes="40" direction="NORTH"/>
        </nxce:latitude>
        <nxce:longitude>
          <nxce:longitudeDMS degrees="056" minutes="58" direction="WEST"/>
        </nxce:longitude>
      </nxcm:position>
   </trackInformation>
  </asdiMessage>
  <asdiMessage sourceFacility="CCM" sourceTimeStamp="2015-03-15T23:57:27Z" trigger="TZ">
    <trackposition>
      <nxcm:aircraftId>UAL936</nxcm:aircraftId>
      <nxcm:speed>470</nxcm:speed>
      <nxcm:reportedAltitude>
        <nxce:assignedAltitude>
          <nxce:simpleAltitude>350</nxce:simpleAltitude>
        </nxce:assignedAltitude>
     </nxcm:reportedAltitude>
      <nxcm:position>
        <nxce:latitude>
          <nxce:latitudeDMS degrees="44" minutes="43" direction="NORTH"/>
        </nxce:latitude>
        <nxce:longitude>
          <nxce:longitudeDMS degrees="062" minutes="42" direction="WEST"/>
        </nxce:longitude>
      </nxcm:position>
    </trackposition>
  </asdiMessage>
</asdiOutput>

我想提取值 sourceFacility="CCZM", sourceTimeStamp="2011-03-15T23:57:27Z"trigger="TZ"

但是 XPath 不应该返回asdiMessage具有名为 的子元素的值trackposition。所以不应该返回以下值: asdiMessage sourceFacility="CCM" sourceTimeStamp="2015-03-15T23:57:27Z" trigger="TZ"因为子元素。

我试过了/asdiOutput/asdiMessage[not(contains(trackposition))],但这根本不返回任何东西

4

1 回答 1

0

首先,修复根元素结束标记中的错字:

</asdiOuput>应该</asdiOutput>

接下来,确保您已为 定义了命名空间前缀http://tfm.faa.gov/tfms/TFMS_XIS

xis="http://tfm.faa.gov/tfms/TFMS_XIS"

然后,这个 XPath,

/xis:asdiOutput/xis:asdiMessage[not(xis:trackposition)]/@sourceFacility

将按"CCZM"要求选择。

sourceTimeStamp您可以为和trigger类似地构造 XPath 。

于 2016-04-28T14:57:23.747 回答