2015-04-27 29 views
0

我有使用cxf和jaxb綁定實現的jax-ws服務。它從另一個下游服務接收xml,將此xml解組到一個POJO並將其保存到持久性緩存存儲。未來的請求由這個持久存儲提供。有時從下游服務接收到的xml包含xmlns =「」。該服務能夠從持久緩存存儲中解組xml,但是當它將響應編組回來時,xml格式不正確。 這是xml,即從下游服務接收的。注意帶有xmlns =「」的PolicyID元素。當數據包含xmlns時,Jaxb輸出無效的Xml =「」

<message:RetrieveOrderResponse 
xmlns:common="urn:xyz:om:common:defn:v1" xmlns:message="urn:xyz:om:order:messages:v1" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<common:MessageInfo CreateDateTime="2015-04-17T13:13:36.819-07:00" 
    MessageGUID="d8ad2956-ff69-45ff-9d57-c30dc50569a1" TransactionGUID="a772169a-b138-40e7-8d16-ca86b68d38b8"> 
    <common:DebugTraceBoolean>true</common:DebugTraceBoolean> 
</common:MessageInfo> 
<common:MessageStatus> 
    <common:Status>Success</common:Status> 
</common:MessageStatus> 
<common:OrderList> 
    <common:Order> 
     <common:OrderLineList> 
      <common:OrderLine> 
       <common:OrderLineData namespace="urn:xyz:e3:data:abc:types:v1" 
        type="xyzProduct"> 
        <ns2:xyzProduct xmlns:datatype="urn:xyz:om:supply:datatype:defn:v1" 
         xmlns:finance="urn:xyz:e3:data:financetypes:defn:v4" 
         xmlns:internal="urn:xyz:cc:es:order:internal" xmlns:min="xalan://org.jaxen.function.MinDateTimeFunction" 
         xmlns:ns2="urn:xyz:e3:data:abc:types:v1" xmlns:ns3="urn:xyz:e3:data:basetypes:defn:v4" 
         xmlns:ns4="urn:xyz:e3:data:financetypes:defn:v4" xmlns:ns5="urn:xyz:e3:data:timetypes:defn:v4" 
         xmlns:ns6="urn:xyz:e3:data:messagetypes:defn:v5" xmlns:ns7="urn:xyz:e3:data:placetypes:defn:v4" 
         xmlns:ns8="urn:xyz:om:supply:messages:defn:v1"> 
         <PolicyID xmlns="" /> 
         <ns2:abcProduct> 
          <ns2:DiningSeatingInformation> 
           <BookingStatusCode xsi:nil="true" /> 
           <DinSeatingCode xsi:nil="true" /> 
          </ns2:DiningSeatingInformation> 
         </ns2:abcProduct> 
        </ns2:xyzProduct> 
       </common:OrderLineData> 
      </common:OrderLine> 
     </common:OrderLineList> 
    </common:Order> 
</common:OrderList> 

此XML進行以下步驟。

  1. 解組到一個POJO
  2. 編組的POJO回XML
  3. 解組來自步驟2回POJO
  4. 的XML
  5. 編組從步驟3 POJO爲xml 從步驟生成的XML 4沒有很好地形成。在下面的示例中,OrderLineData的開始標記綁定到有效的命名空間前綴,但結束標記未綁定。如果我從xml中刪除xmlns =「」,那麼step4會輸出格式良好的xml。這是嚴重形成的XML。

    真正 成功

任何提示如何處理這種XML?

+0

出於某種原因,我無法得到不好的XML在我的問題中出現。上傳到s3。希望每個人都能看到它。 https://s3.amazonaws.com/uploads.hipchat.com/28219/710237/b5vCWEeGmEYIOBF/xmlfile2.out.xml –

回答

0

您是否使用由某些XSD生成的類?如果是,請確保在生成的包中包含package-info.java類。這個類負責名稱空間的處理,它在編組/解組過程中使用。

相關問題