我遇到了一些问题,JAXB将xml文件解组为Request对象并将其发送给servis。
而不是正确的响应,它返回错误 - Unknown user
。
我正在使用下一个架构:
xml文件,测试日期=>解析为RQ对象=>发送到servis =>采取回应并检查它。
这是源xml文件:
<OTA_AirLowFareSearchRQ EchoToken="50987" SequenceNmbr="1" Target="Production" TimeStamp="2003-11-19T19:44:10-05:00"
Version="2.001"
xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_AirLowFareSearchRQ.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.opentravel.org/OTA/2003/05">
<POS>
<TPA_Extensions>
<TPA_Extension>
<PromoRatesRequired Value="false"/>
<UserName Value="342561"/>
<UserPassword Value="1234"/>
<ClearCache Value="true"/>
</TPA_Extension>
</TPA_Extensions>
</POS>
<OriginDestinationInformation>
<DepartureDateTime>2015-04-13T00:00:00</DepartureDateTime>
<OriginLocation LocationCode="DUB"/>
<DestinationLocation LocationCode="CDG"/>
</OriginDestinationInformation>
<TravelPreferences>
<CabinPref PreferLevel="Preferred" Cabin="Economy"/>
</TravelPreferences>
<TravelerInfoSummary>
<AirTravelerAvail>
<PassengerTypeQuantity Code="ADT" Quantity="1"/>
<PassengerTypeQuantity Code="CHD" Quantity="0"/>
<PassengerTypeQuantity Code="INF" Quantity="1"/>
</AirTravelerAvail>
</TravelerInfoSummary>
</OTA_AirLowFareSearchRQ>
我使用JAXB解析并转换为我的RQ
对象。
它返回奇怪的错误而不是响应。
我只是将未解析的请求写入xml文件:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns1:OTA_AirLowFareSearchRQ xmlns:ns1="http://www.opentravel.org/OTA/2003/05" Version="2.001" EchoToken="50987"
SequenceNmbr="1" TimeStamp="2003-11-20T00:44:10.000Z" Target="Production"
DirectFlightsOnly="false">
<ns1:POS>
<ns1:TPA_Extensions>
<ns1:TPA_Extension>
<ns1:PromoRatesRequired Value="false"/>
<ns1:UserName Value="342561"/>
<ns1:UserPassword Value="1234"/>
<ns1:ClearCache Value="true"/>
</ns1:TPA_Extension>
</ns1:TPA_Extensions>
</ns1:POS>
<ns1:OriginDestinationInformation>
<ns1:DepartureDateTime>2015-04-13T00:00:00</ns1:DepartureDateTime>
<ns1:OriginLocation LocationCode="DUB" CodeContext="IATA"/>
<ns1:DestinationLocation LocationCode="CDG" CodeContext="IATA"/>
</ns1:OriginDestinationInformation>
<ns1:TravelPreferences OriginDestinationRPHs="" ETicketDesired="false" SmokingAllowed="false">
<ns1:CabinPref PreferLevel="Preferred" Cabin="Economy"/>
</ns1:TravelPreferences>
<ns1:TravelerInfoSummary>
<ns1:AirTravelerAvail>
<ns1:AirTravelerAvail>
<ns1:PassengerTypeQuantity Code="ADT" Quantity="1"/>
<ns1:PassengerTypeQuantity Code="CHD" Quantity="0"/>
<ns1:PassengerTypeQuantity Code="INF" Quantity="1"/>
</ns1:AirTravelerAvail>
</ns1:AirTravelerAvail>
</ns1:TravelerInfoSummary>
<ns1:dataStatus>SUCCESS_LOW_FARE_SEARCH_REQUEST</ns1:dataStatus>
</ns1:OTA_AirLowFareSearchRQ>
它有很多讨厌的ns1:
nameprefix。
我想知道如何在没有这个多余前缀的情况下解组?
答案 0 :(得分:1)
您可以使用以下包级别@XmlSchema
注释正确映射XML文档中的命名空间限定。 packaage级别注释放在名为package-info
的特殊类中。
<强> package.info.java 强>
以下是package-info
类的完整来源。
@XmlSchema(
namespace = "http://www.opentravel.org/OTA/2003/05",
elementFormDefault = XmlNsForm.QUALIFIED)
package example;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
以下是我博客上您认为有用的帖子的链接: