2016-09-20 2 views
1

Ich habe die folgende XML:XPath für ein Element, wenn ein verwandtes Element einen Wert enthält?

<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> 

ich die cityCode von

originDestinationDetails/itineraryInfo/travelProduct/boardpointDetail/cityCode

Aber nur, wenn der longFreetext Knoten enthält 'CAR' zurückkehren möchten.

Ich habe stundenlang auf diese und haben verschiedene 'contains' versucht. Kann es einfach nicht zur Arbeit bringen. Jede Hilfe würde sehr geschätzt werden!

+0

haben Sie Prädikate in XPath versucht? http://www.w3schools.com/xsl/xpath_syntax.asp –

+0

übrigens haben Sie möglicherweise versehentlich Ihre XML ausgeschnitten. Ursache für fehlende End-Tags Hier habe ich versucht, dein XML zu validieren. http://www.freeformatter.com/xpath-tester.html http://www.xmlvalidation.com/index.php?id=1&L=0 –

Antwort

1

Dieser XPath,

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

wird nur die cityCode Elemente in itineraryInfo Elemente auswählen, die "CAR"longFreetext deren String-Wert enthält die Zeichenfolge haben.

+0

Perfekt! Vielen Dank. – user6854598

Verwandte Themen