今天项目需要用到一个技术xml转换为java对象,项目中调用了一个webservice返回的是xml,项目中需要用到这里面,如果每次都去解析xml很浪费时间,于是想到能不能直接将xml转换为javabean,我使用的是javaXB技术,但是遇到了一个问题,类似这种形式:<TravelItineraryReadRS
xmlns="http://webservices.sabre.com/sabreXML/2011/10" Version="2.0.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:stl="http://services.sabre.com/STL/v01"><stl:ApplicationResults status="Complete">
  <stl:Success timeStamp="2013-05-27T23:00:01-05:00" />
</stl:ApplicationResults>在转换之前需要手写javabean,根节点有定义这个标签,那么我应该怎么写呢?
各位大神求救啊....XMLSTLxml转换javabean对象技术

解决方案 »

  1.   

    jaxb 就可以把schema文件(*.xsd)直接转成javabean的
      

  2.   

    额,能详细点么,<TravelItineraryReadRS
        xmlns="http://webservices.sabre.com/sabreXML/2011/10" Version="2.0.0"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:stl="http://services.sabre.com/STL/v01">
    你说的是这个? 还是下面stl标签里面的内容?
      

  3.   

    这是整个文件:<?xml version="1.0" encoding="UTF-8"?>
    <!--  
    615922901.1369713601327.JavaMail.websvc.swshlc124 Content-Type:
    text/xml Content-Id: TravelItineraryReadLLSRS
    -->
    <TravelItineraryReadRS
    xmlns="http://webservices.sabre.com/sabreXML/2011/10" Version="2.0.0"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:stl="http://services.sabre.com/STL/v01">

    <stl:ApplicationResults status="Complete">
    <stl:Success timeStamp="2013-05-27T23:00:01-05:00" />
    </stl:ApplicationResults>

    <TravelItinerary>
    <CustomerInfo>

    <Address>
    <AddressLine>N/SIGNET TRAVEL</AddressLine>
    <AddressLine>
    A/1170 DURFEE AVE. SUITE ES. EL MONTE
    </AddressLine>
    <AddressLine>C/LOS ANGELES, CA US</AddressLine>
    <AddressLine>Z/91733</AddressLine>
    </Address>

    <ContactNumbers>
    <ContactNumber LocationCode="LAX" Phone="6052187-B"
    RPH="001" />

    </ContactNumbers>

    <PersonName Infant="false" NameNumber="01.01"
    NameReference="TEST" RPH="1">
    <Email>&#135;[email protected]&#135;</Email>
    <GivenName>HOWARD</GivenName>
    <Surname>LINL</Surname>
    </PersonName>

    </CustomerInfo>



    <ItineraryInfo>
    <ReservationItems>
    <Item RPH="1">
    <FlightSegment AirMilesFlown="5636"
    ArrivalDateTime="05-31T17:55" DepartureDateTime="2013-05-30T13:25"
    ElapsedTime="12.30" FlightNumber="0024" NumberInParty="01"
    ResBookDesigCode="H" SegmentNumber="0001" SmokingAllowed="false"
    SpecialMeal="false" Status="HK" StopQuantity="00"
    eTicket="true">
    <DestinationLocation LocationCode="ICN" />
    <Equipment AirEquipType="772" />
    <MarketingAirline Code="KE" FlightNumber="0024" />
    <Meal Code="L" />
    <Meal Code="D" />
    <OriginLocation LocationCode="SFO"
    Terminal="INTERNATIONAL TERMINAL" TerminalCode="I" />
    <SupplierRef ID="ABRQ" />
    <UpdatedArrivalTime>
    05-31T17:55
    </UpdatedArrivalTime>
    <UpdatedDepartureTime>
    05-30T13:25
    </UpdatedDepartureTime>
    </FlightSegment>
    </Item>
    </ReservationItems>
    <Ticketing RPH="01" TicketTimeLimit="TAW7RVC22MAY055/TEST" />
    </ItineraryInfo>



    <ItineraryRef AirExtras="false" ID="SVNBJF" InhibitCode="U"
    PartitionID="AA" PrimeHostID="1S">
    <Source AAAPseudoCityCode="7RVC"
    CreateDateTime="2013-05-22T04:47" CreationAgent="AW1"
    HomePseudoCityCode="7RVC" PseudoCityCode="7RVC"
    ReceivedFrom="LIN HOWARD" />
    </ItineraryRef>


    <ReInfo>
    <Re RPH="001" Type="Historical">
    <Text>
    POSSIBLE DUPE BOOKING. SEE PNR QPGKTR RSCMQT RSEKAI
    </Text>
    </Re>
    <Re RPH="002" Type="Historical">
    <Text>
    POSSIBLE DUPE BOOKING. SEE PNR TAWXAK TDSCST
    </Text>
    </Re>
    </ReInfo>


    </TravelItinerary>
    </TravelItineraryReadRS>被卡在这里了,求救
      

  4.   

    1 maven jaxb插件 由xsd文件生成对应的javabean
    2 java bin目录下的wsimport命令
    3 使用如下的代码进行序列反序列化JAXBContext jaxbContext = JAXBContext.newInstance("XX.jaxb");
    StringWriter sw = new StringWriter();
    Marshaller m = jaxbContext.createMarshaller();
    JAXBElement element = new JAXBElement(new QName(
                 "test", "MyTestXml"),
            fatherTestXmlClass.getClass(), fatherTestXmlClass);
    m.marshal(element, sw);
      

  5.   

    额,能详细点么,<TravelItineraryReadRS
        xmlns="http://webservices.sabre.com/sabreXML/2011/10" Version="2.0.0"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:stl="http://services.sabre.com/STL/v01">
    你说的是这个? 还是下面stl标签里面的内容?额
    我说的类似这个
    http://www.cnblogs.com/chenqingwei/archive/2010/05/10/1731743.html