2014-10-03 30 views
2

我有下面的XML代表一個調用事件並需要解組到Java對象。我正在使用JAXB並且能夠處理大部分內容,除了表示值集合的塊作爲元素名稱。在JAXB中表示多個元素名稱

爲每個可能的元素創建一個類的缺點(即給出here)有沒有一種方法可以更動態地在JAXB中表示它?

<message xmlns='jabber:client' from='pubsub.server.example.com' to='[email protected]' 
id='[email protected]__uz8mQ'> 
<event xmlns='http://jabber.org/protocol/pubsub#event'> 
    <items node='leon_office_vmstsp_default'> 
     <item id='leon_office_vmstsp_default'> 
      <callstatus xmlns='http://xmpp.org/protocol/openlink:01:00:00#call-status' 
       busy='false'> 
       <call> 
        <id>1411743786867</id> 
        <profile>leon_office</profile> 
        <interest>leon_office_vmstsp_default</interest> 
        <changed>State</changed> 
        <state>CallEstablished</state> 
        <direction>Outgoing</direction> 
        <duration>3</duration> 
        <caller> 
         <number>6001</number> 
         <name>leon_office</name> 
        </caller> 
        <called> 
         <number>3807</number> 
         <name>3807</name> 
        </called> 
        <actions> 
         <ClearCall /> 
         <RemoveThirdParty /> 
         <StopVoiceDrop /> 
         <MuteParty /> 
         <AddThirdParty /> 
         <SendDigit /> 
         <ClearConnection /> 
         <UnMuteParty /> 
         <StartVoiceDrop /> 
        </actions> 
        <participants> 
         <participant exten='3807' /> 
         <participant exten='6001' /> 
        </participants> 
        <features> 
         <feature id='Conference'>true</feature> 
        </features> 
       </call> 
      </callstatus> 
     </item> 
    </items> 
</event> 
<headers xmlns='http://jabber.org/protocol/shim'> 
    <header name='pubsub#subid'>aLfatHpG059mNcAe5ta11YNOAjA02l486sE1p4hK</header> 
</headers> 

+0

你解決了這個問題嗎?如果是的話,你是如何解決它的? – Xstian 2014-10-13 13:52:07

回答

2

JAXB Java類代

  1. 生成您的XML的XSD。您也可以使用this link或其他工具正常工作。
  2. 通過XJC生成XSD類,Maven插件see here

下面的連接例子maven-jaxb2-plugin

<plugin> 
    <groupId>org.jvnet.jaxb2.maven2</groupId> 
    <artifactId>maven-jaxb2-plugin</artifactId> 
    <version>0.8.1</version> 
    <executions> 
     <execution> 
      <phase>generate-sources</phase> 
      <goals> 
       <goal>generate</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <args> 
      <arg>-Xannotate</arg> 
      <arg>-Xnamespace-prefix</arg> 
      <arg>-nv</arg> 
     </args> 
     <extension>true</extension> 
     <forceRegenerate>true</forceRegenerate> 
     <bindingDirectory>${basedir}/src/main/resources/xjb</bindingDirectory> 
     <bindingIncludes> 
      <include>*.xjb</include> 
     </bindingIncludes> 
     <schemas> 
      <schema> 
       <fileset> 
        <directory>${basedir}/src/main/resources/xsd</directory> 
        <includes> 
         <include>*.xsd</include> 
        </includes> 
       </fileset> 
      </schema> 
     </schemas> 
     <debug>true</debug> 
     <verbose>true</verbose> 
     <plugins> 
      <plugin> 
       <groupId>org.jvnet.jaxb2_commons</groupId> 
       <artifactId>jaxb2-basics</artifactId> 
       <version>0.6.2</version> 
      </plugin> 
      <plugin> 
       <groupId>org.jvnet.jaxb2_commons</groupId> 
       <artifactId>jaxb2-basics-annotate</artifactId> 
       <version>0.6.2</version> 
      </plugin> 
      <plugin> 
       <groupId>org.jvnet.jaxb2_commons</groupId> 
       <artifactId>jaxb2-namespace-prefix</artifactId> 
       <version>1.1</version> 
      </plugin> 
     </plugins> 
    </configuration> 
</plugin> 

我希望它可以幫助你。

相關問題