2016-09-20 91 views
1

我有以下XML:当相关元素包含值时元素的XPath?

<originDestinationDetails> 
    <originDestination></originDestination> 
    <itineraryInfo> 
     <elementManagementItinerary> 
     <reference> 
      <qualifier>ST</qualifier> 
      <number>1</number> 
     </reference> 
     <segmentName>RU</segmentName> 
     <lineNumber>2</lineNumber> 
     </elementManagementItinerary> 
     <travelProduct> 
     <product> 
      <depDate>201116</depDate> 
     </product> 
     <boardpointDetail> 
      <cityCode>CWB</cityCode> 
     </boardpointDetail> 
     <companyDetail> 
      <identification>1A</identification> 
     </companyDetail> 
     </travelProduct> 
     <itineraryMessageAction> 
     <business> 
      <function>32</function> 
     </business> 
     </itineraryMessageAction> 
     <relatedProduct> 
     <quantity>1</quantity> 
     <status>HK</status> 
     </relatedProduct> 
     <itineraryFreetext> 
     <freetextDetail> 
      <subjectQualifier>3</subjectQualifier> 
     </freetextDetail> 
     <longFreetext>-CAR/HERTZ/PUP-20NOV-0700/RT-22NOV-1800/VT-ICAR/CF-125456/SI-NVS</longFreetext> 

我想返回cityCode

originDestinationDetails/itineraryInfo/travelProduct/boardpointDetail/cityCode

但仅限于longFreetext节点包含'CAR'

我一直在这个小时,并尝试过各种不同的'contains'。只是不能得到它的工作。任何帮助将不胜感激!

+0

你有没有在xpath中试过谓词? http://www.w3schools.com/xsl/xpath_syntax.asp –

+0

顺便说一句,你可能会不小心剪掉你的XML。导致你缺少结束标签。这是我尝试验证XML的地方。 http://www.freeformatter.com/xpath-tester.html http://www.xmlvalidation.com/index.php?id=1&L=0 –

回答

1

此XPath,

/originDestinationDetails 
    /itineraryInfo[contains(itineraryFreetext/longFreetext, 'CAR')] 
    /travelProduct/boardpointDetail/cityCode 

将选择仅在具有longFreetext其字符串值包含字符串"CAR"itineraryInfo元素那些cityCode元素。

+0

完美!非常感谢。 – user6854598