2012-12-01 36 views
1

正在與我的應用程序一起處理服務器響應。我將這些東西當作字符串來回應。使用JAXB將XML解析爲java變量(bean)

<Body> 
    <HotelRQ xmlns="urn:Hotel_Search"> 
<POS> 
     <Source Username='USERNAME' Password='PASSWORD' PropertyID='PROPERTYID' /> 
</POS> 
<AvailRequests> 
    <AvailRequest> 
     <StayDateRange Start='2009-09-05T12:00:00' End='2009-09-06T12:00:00'/> 
     <RoomStays> 
      <RoomStay> <!—for Room 1-> 
       <GuestCounts> 
        <GuestCount Count='2'/> 
       </GuestCounts> 
       <ChildCounts> 
        <ChildAge Age='10'/> 
        <ChildAge Age='09'/> 
       </ChildCounts> 
      </RoomStay> 

      </RoomStays> 
      <SearchCriteria> 
     <Criterion> 
     <HotelRef HotelCityName='CITY' HotelName='' Area='' Attraction='' Rating=''/> 
     <Sorting Preference='2'/> 
              <ResponseType Compact="Y"/> 
     </Criterion> 
      </SearchCriteria> 
     </AvailRequest> 
     </AvailRequests> 
    </HotelRQ> 
</Body> 

我可以使用jaxb嗎?

我正在使用此文件來解析我正在獲取服務器響應。我想用JAXB解析它。我得到它在字符串format.and我怎樣才能直接映射到Java類變量或豆類? thanx。

回答

0

你可以看到這樣一個問題:How do I load an org.w3c.dom.Document from XML in a string?

加載DOM文檔中的XML字符串後,你可以調用等等,方法getElementsByTagName檢索特定的標籤,然後在它們之間迭代,用getNodeValue提取標籤內的值和getAttribute來提取屬性。

你不能簡單的將其映射到在運行時desider領域的Java類,但你可以用簡單的方法包裝元素的解析和提取類中像getRooms()

+0

我可以使用JAXB這個? ,以及如何將這個XML映射到相應的java類(Bean)? –

+1

是的,但是您需要XML架構來構建帶有jaxb的JavaBean包裝器,因此,除非您有它,否則必須編寫XSD架構或從XML生成一個XML架構(在刪除<! - Room 1之後 - >)在http://www.freeformatter.com/xsd-generator.html這仍然需要一些手動調整。 如果您沒有XSD架構,也許手動編寫JavaBean類會更容易,並且會使用DOM方法包裝getter和setter。 – Jacopofar

+0

對不起,但我不知道該怎麼辦。有沒有任何教程呢?基本上我從服務器URLConnection(XML格式)作爲請求,然後我需要分開它在包裝>處理它,然後作爲要求響應。但如何映射該文件和bean? –