XML查询未返回预期结果
给定以下XML:XML查询未返回预期结果,xml,xpath,Xml,Xpath,给定以下XML: <?xml version="1.0" encoding="UTF-8"?> <Accommodations> <AccommodationSegment AccommodationCode="627|26234" AccommodationId="15390132" AccommodationName="blah" Availability="available" BasicAdultCost="180.16" BoardCode="SC" B
<?xml version="1.0" encoding="UTF-8"?>
<Accommodations>
<AccommodationSegment AccommodationCode="627|26234" AccommodationId="15390132" AccommodationName="blah" Availability="available" BasicAdultCost="180.16" BoardCode="SC" BookableByFAB="true" BrandName="blah" ClassCode="2*" Currency="GBP" EndDate="20170918" ItineraryId="si1068" MaxChildAge="17" NormalisedName="BLAH" NumNights="7" ResortId="558" ResortName="blah" StartDate="20170911" Supplier="TT2" SyndicatorRanking="100" Type="Apartments">
<AvailableBoardBasis>BB</AvailableBoardBasis>
<AvailableBoardBasis>HB</AvailableBoardBasis>
<AvailableBoardBasis>SC</AvailableBoardBasis>
<Address Address1="blah" Address2="blah" Address3="Tenerife" CityOrTown="Puerto de la Cruz" Country="ES" PostCode="34324" />
<TelephoneNumber>+34 922370565</TelephoneNumber>
<Description>blah blah blah blah blah blah blah blah blah blah blah blah
blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah</Description>
<GeoPosition Latitude="28.4129" Longitude="-16.5437" />
<DirectLink System="FABRIX">
<DirectLinkURL><![CDATA[https://ww9.website.com/deep_linking/deep_linking.html?rooms=1&journey=Hotels&checkinDate=11092017&duration=7&suppliers=TT2&accommodationId=15390132]]></DirectLinkURL>
</DirectLink>
<AccommodationUnits>
<AccommodationUnit AUID="H2" Code="2SC" MaxExtraChildren="0" MaxExtraInfants="0" MaxOccupancy="1" MinOccupancy="1" Name="Studio - Self catering" QuantityAvailable="9">
<RoomRate Amount="180.16" BoardBasis="SC" Currency="GBP" EndDate="20170918" RefundType="refundable" StartDate="20170911" />
</AccommodationUnit>
<AccommodationUnit AUID="H2" Code="2BB" MaxExtraChildren="0" MaxExtraInfants="0" MaxOccupancy="1" MinOccupancy="1" Name="Studio - Bed and Breakfast" QuantityAvailable="9">
<RoomRate Amount="216.91" BoardBasis="BB" Currency="GBP" EndDate="20170918" RefundType="refundable" StartDate="20170911" />
</AccommodationUnit>
<AccommodationUnit AUID="H2" Code="2HB" MaxExtraChildren="0" MaxExtraInfants="0" MaxOccupancy="1" MinOccupancy="1" Name="Studio - Half board" QuantityAvailable="9">
<RoomRate Amount="268.36" BoardBasis="HB" Currency="GBP" EndDate="20170918" RefundType="refundable" StartDate="20170911" />
</AccommodationUnit>
</AccommodationUnits>
</AccommodationSegment>
<AccommodationSegment AccommodationCode="627|26234" AccommodationId="15390132" AccommodationName="blah" Availability="available" BasicAdultCost="180.16" BoardCode="SC" BookableByFAB="true" BrandName="blah" ClassCode="2*" Currency="GBP" EndDate="20170918" ItineraryId="si1068" MaxChildAge="17" NormalisedName="BLAH" NumNights="7" ResortId="558" ResortName="blah" StartDate="20170911" Supplier="TT2" SyndicatorRanking="100" Type="Apartments">
<AvailableBoardBasis>BB</AvailableBoardBasis>
<AvailableBoardBasis>HB</AvailableBoardBasis>
<AvailableBoardBasis>SC</AvailableBoardBasis>
<Address Address1="blah" Address2="blah" Address3="Tenerife" CityOrTown="Puerto de la Cruz" Country="ES" PostCode="73737" />
<TelephoneNumber>0034 922384811</TelephoneNumber>
<Description>blah blah blah blah blah blah blah blah blah blah blah blah
blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah</Description>
<GeoPosition Latitude="28.4119" Longitude="-16.5473" />
<DirectLink System="FABRIX">
<DirectLinkURL><![CDATA[https://ww9.website.com/deep_linking/deep_linking.html?rooms=1&journey=Hotels&checkinDate=12092017&duration=7&suppliers=TT2&accommodationId=16271549]]></DirectLinkURL>
</DirectLink>
<AccommodationUnits>
<AccommodationUnit AUID="H4476" Code="4476BB" MaxExtraChildren="0" MaxExtraInfants="0" MaxOccupancy="1" MinOccupancy="1" Name="Double Room for Single Use - Bed and Breakfast" QuantityAvailable="9">
<RoomRate Amount="250.04" BoardBasis="BB" Currency="GBP" EndDate="20170919" RefundType="non_refundable" StartDate="20170912" />
</AccommodationUnit>
<AccommodationUnit AUID="H4476" Code="4476HB" MaxExtraChildren="0" MaxExtraInfants="0" MaxOccupancy="1" MinOccupancy="1" Name="Double Room for Single Use - Half board" QuantityAvailable="9">
<RoomRate Amount="276.97" BoardBasis="HB" Currency="GBP" EndDate="20170919" RefundType="non_refundable" StartDate="20170912" />
</AccommodationUnit>
<AccommodationUnit AUID="H4476" Code="4476FB" MaxExtraChildren="0" MaxExtraInfants="0" MaxOccupancy="1" MinOccupancy="1" Name="Double Room for Single Use - Full board" QuantityAvailable="9">
<RoomRate Amount="303.88" BoardBasis="FB" Currency="GBP" EndDate="20170919" RefundType="non_refundable" StartDate="20170912" />
</AccommodationUnit>
<AccommodationUnit AUID="H4476" Code="4476AI" MaxExtraChildren="0" MaxExtraInfants="0" MaxOccupancy="1" MinOccupancy="1" Name="Double Room for Single Use - All inclusive" QuantityAvailable="9">
<RoomRate Amount="317.34" BoardBasis="AI" Currency="GBP" EndDate="20170919" RefundType="non_refundable" StartDate="20170912" />
</AccommodationUnit>
</AccommodationUnits>
</AccommodationSegment>
</Accommodations>
为什么查询返回包含“可退款”房间的第一家(酒店)而不是包含“不可退款”酒店的第二家酒店?查询有什么问题和/或是否存在可以工作的查询?您可以使用下面的
XPath
表达式来匹配包含
的第一个调节段
元素:
(//AccommodationSegment[./descendant::RoomRate[@RefundType="non_refundable"]])[1]
或者您可以将XPath
修改为
(//*[local-name()="AccommodationSegment" and .//*[@RefundType="non_refundable"]])[1]
注意
[“RoomRate”]
谓词,因为字符串将始终返回True
/*[@returntype…
替换为/*[@returntype…
“住宿分段”
,并且文档中的某个地方有属性为returnType=“non\u returnable”
的元素,请查找该元素
我的意思是:
查找任何元素,如果其名称为“住宿区”
,并且包含任何属性为returnType=“non\u returnable”
您希望得到什么样的确切输出?我想要第一个,您会发现我的查询返回的第一个包含“可退款”的,而不是我期望的-第一个包含不可退款的-您确定需要
住宿部分,但不是住宿单元
或住宿单元
?只有一个住宿部分
在提供的xml
示例中,它同时包含
和
对不起,我粘贴了错误的xml-现在已更新。是的,我需要住宿部分
它有不可退款的房间
(//*[local-name()="AccommodationSegment" and .//*[@RefundType="non_refundable"]])[1]