首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XmlPath选择前面/父属性

XmlPath选择前面/父属性
EN

Stack Overflow用户
提问于 2018-06-29 12:42:45
回答 2查看 813关注 0票数 0

给定以下XML片段:

代码语言:javascript
复制
<Holiday ItineraryId="123456789" Country="ES" NumberOfNights="7" LeadInPricePerPassenger="447.3" FlightOnly="true" OneWayOnly="false" Currency="GBP" BookingChannel="WEB" PassengerIdRequired="false" PassengerIdMandatory="false" NationalityRequired="false" NationalityMandatory="false">
    <Flight OriginAirport="LGW" DestinationAirport="ALC" MultiLegOutboundFlight="true">
          <OutboundSubSegments DeparturePoint="LGW" DepartureDate="20180802" DepartureTime="0920" ArrivalPoint="OSL" ArrivalDate="20180802" ArrivalTime="1225" OperatingCarrier="DY" OperatedBy="Super Air Shuttle" FlightNumber="HY637" OriginAirportName="London Gatwick" DestinationAirportName="Oslo" />
   </Flight>
</Holiday>

<Holiday ItineraryId="9283873737" Country="ES" NumberOfNights="7" LeadInPricePerPassenger="447.3" FlightOnly="true" OneWayOnly="false" Currency="GBP" BookingChannel="WEB" PassengerIdRequired="false" PassengerIdMandatory="false" NationalityRequired="false" NationalityMandatory="false">
    <Flight OriginAirport="LGW" DestinationAirport="ALC" MultiLegOutboundFlight="true">
          <OutboundSubSegments DeparturePoint="LGW" DepartureDate="20180802" DepartureTime="0920" ArrivalPoint="OSL" ArrivalDate="20180802" ArrivalTime="1225" OperatingCarrier="DY" OperatedBy="Super Air Shuttle" FlightNumber="HY637" OriginAirportName="London Gatwick" DestinationAirportName="Oslo" />
   </Flight>
</Holiday>

<Holiday ItineraryId="894847463" Country="ES" NumberOfNights="7" LeadInPricePerPassenger="447.3" FlightOnly="true" OneWayOnly="false" Currency="GBP" BookingChannel="WEB" PassengerIdRequired="false" PassengerIdMandatory="false" NationalityRequired="false" NationalityMandatory="false">
    <Flight OriginAirport="LGW" DestinationAirport="ALC" MultiLegOutboundFlight="true">
          <OutboundSubSegments DeparturePoint="LGW" DepartureDate="20180802" DepartureTime="0920" ArrivalPoint="OSL" ArrivalDate="20180802" ArrivalTime="1225" OperatingCarrier="DY" OperatedBy="Super Air Shuttle" FlightNumber="HY637" OriginAirportName="London Gatwick" DestinationAirportName="Oslo" />
   </Flight>
</Holiday>

当我需要提取所有ItineraryIds的列表时,基于具有MultiLegOutboundFlight="true“属性的子元素true

我如何编写一个XmlPath来实现这一点?我正在使用RestAssurred,并且正在进行实验,但发现很难在网上找到用于XmlPath语法的资源,所以我笨手笨脚地摸索着:

如果我这样做的话:

代码语言:javascript
复制
public List<String> getMultiLegFlightItineraryIdList() {
    XmlPath xmlPath = new XmlPath(response.asString()); if(xmlPath.getNode("Holiday.Flight").getAttribute("MultiLegOutboundFlight").equals("true")) {
        String itineraryId = xmlPath.getNode("Holiday").getAttribute("ItineraryId");
        System.out.println(itineraryId);
    }
    return itineraryIDList;
}

然后收到以下错误:

代码语言:javascript
复制
[Fatal Error] :2:802: The markup in the document following the root element must be well-formed.
ERROR:  'The markup in the document following the root element must be well-formed.'

java.lang.IllegalArgumentException: Failed to convert XML to Java Object. If 
you're trying convert to a list then use the getList method instead.

最初,我有以下几点:

代码语言:javascript
复制
allMultiLegPackages = response.xmlPath().getList("Holiday.Flight.findAll{it.@MultiLegOutboundFlight=='true'}//parent::Holiday");

这将返回条件为真的所有假日的列表,但如何获取属性ItineraryID作为列表?

EN

回答 2

Stack Overflow用户

发布于 2018-06-29 13:30:56

这是父节点的Xpath,

代码语言:javascript
复制
//flight[@multilegoutboundflight='true']//parent::holiday

您需要添加的是将检索内部属性的方法。就像传递getAttribute('ItineraryId')一样

票数 0
EN

Stack Overflow用户

发布于 2018-06-29 14:58:48

下面的片段可能对你有帮助。

代码语言:javascript
复制
String itineraryId = "";
XmlPath xmlpath = new XmlPath(responseXML);
if(xmlpath.getNode("Holiday").getNode("Flight").getAttribute("MultiLegOutboundFlight").equals("true")) {
    itineraryId = xmlpath.getNode("Holiday").getAttribute("ItineraryId");
    System.out.println("Itinerary ID ::: "+itineraryId);
}

进口:

代码语言:javascript
复制
import com.jayway.restassured.path.xml.XmlPath;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51102048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档