2016-05-13 2 views
0

XMPPサブスクリプション(以下)から受け取ったメッセージのXML構造を持っています。私はこのメッセージの「ユーザー」部分だけを気にし、これをJavaの同等の「ユーザー」オブジェクトに変換して、他の処理を実行するために使用したいと考えています。これをJavaで実現する方法はありますか?XML構造の1つの子要素をJavaオブジェクトに変換します。

ジャクソン注釈(例:@JsonProperty)を使用して、すべての親要素(イベント、通知、更新、データなど)の同等のオブジェクトを作成することができますが、彼らについては無駄に思える。

「ユーザー」の部分をオブジェクトに変換して残りの部分を忘れることができるかどうか不明ですか?

<event xmlns='http://jabber.org/protocol/pubsub#event'> 
    <notification xmlns='http://jabber.org/protocol/pubsub'> 
    <Update> 
     <data> 
     <user> 
     <dialogs>/finesse/api/User/1234/Dialogs</dialogs> 
     <extension></extension> 
     <firstName>1234</firstName> 
     <lastName>1234</lastName> 
     <loginId>1234</loginId> 
     <loginName>1234</loginName> 
     <roles> 
     <role>Agent</role> 
     </roles> 
     <state>LOGOUT</state> 
     <stateChangeTime>2015-03-11T14:25:42Z</stateChangeTime> 
     <teamId>1</teamId> 
     <teamName>Default</teamName> 
     <uri>/finesse/api/User/1234</uri> 
     </user> 
    </data> 
    </Update> 
    </notification> 
    </event> 

答えて

0

それは少し醜いと巨大なXMLデータには最適ではないのですが、あなたは、例えば、dom4jのためにと、「唯一のユーザーのxml」の部分を解析するためにジャクソンを使うよりも、使用してXMLからユーザ部分を抽出することもできます。

Document doc = new SAXReader().read(...); 
    Node user = doc.getRootElement() 
      .element("notification") 
      .element("Update") 
      .element("data") 
      .element("user"); 
    String onlyUserXml = user.asXML(); 
関連する問題