Java 如何使用JAXB解组定制xml名称空间?
我在JAXB将xml文件解组以请求对象并将其发送给servis时遇到了一些问题 它返回的不是正确的响应,而是错误-Java 如何使用JAXB解组定制xml名称空间?,java,xml,jaxb,unmarshalling,Java,Xml,Jaxb,Unmarshalling,我在JAXB将xml文件解组以请求对象并将其发送给servis时遇到了一些问题 它返回的不是正确的响应,而是错误-未知用户 我正在使用下一个模式: xml文件,测试日期=>解析到RQ对象=>发送到servis=>获取响应并检查它 以下是源xml文件: <OTA_AirLowFareSearchRQ EchoToken="50987" SequenceNmbr="1" Target="Production" TimeStamp="2003-11-19T19:44:10-05:00"
未知用户
我正在使用下一个模式:
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>
<?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>
它有很多讨厌的名字前缀
我想知道如何在没有冗余前缀的情况下解组?您可以使用以下包级别的
@XmlSchema
注释在XML文档中正确映射命名空间限定。package级别的注释放在一个名为package info
的特殊类中
package.info.java
下面是包信息
类的完整源代码
@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;
有关JAXB和名称空间的更多信息
以下是我博客上的帖子链接,您可能会发现这些帖子很有用:
@javax.xml.bind.annotation.XmlSchema(名称空间=”http://www.opentravel.org/OTA/2003/05“,elementFormDefault=javax.xml.bind.annotation.XmlNsForm.QUALIFIED)包com.aerlingus.ta.models.b2b.faresearch
@nazar_art-您的XML是直接由JAXB构建的(如果是的话,您是如何构建JAXBContext
),还是通过JAX-WS web服务间接由JAXB构建的?我使用wsimport
从wsdl生成模型。它应该在内部使用JAXB。我试着根据这个模型从xml文件中解组这个文件。是否可以使用一些类并将它的名称空间重写为no-ns?Smt@XmlSchema(namespace=”“)