我們正在設計用於處理XML消息的系統。用於處理大型XML的Java OO設計
處理Java類需要從大型XML中分離出各種屬性和值,並將這些參數作爲參數傳遞給各個處理程序類以進行各種操作。
我們已經想到了以下選項:
A)
傳遞整個XML到每個處理程序,讓它提取相關的位 - 但覺得這可能是低效的,通過每個時間
圍繞XMLB)
轉換的XML成DTO或設定得較小的DTO和通過每個DTO到相關處理程序
C)
切XML轉換片段,並通過這些給每個處理方法
我們不和與每個這些,所以任何建議哪個方向走?
示例XML
<IdAction>supplied</IdAction>
<RegId>true</RegId>
<DeRegId>false</DeRegId>
<SaveMessage>false</SaveMessage>
<ServiceName>abcRequest</ServiceName>
<timeToPerform>3600</timeToPerform>
<timeToReceipt/>
<SendToBES>true</SendToBES>
<BESQueueName>com.abc.gateway.JMSQueue.forAddRequest</BESQueueName>
<BESTransform/>
<BESJMSProperties>
<property>
<propName>stateCode</propName>
<propValue>OK</propValue>
</property>
<property>
<propName>stateResponse</propName>
<propValue>OK</propValue>
</property>
</BESJMSProperties>
這包含由4點的處理程序處理的4塊中的一個確實
<IdAction>supplied</IdAction>
<RegId>true</RegId>
<DeRegId>false</DeRegId>
另一個確實
<timeToPerform>3600</timeToPerform>
<timeToReceipt/>
下確實
<SendToBES>true</SendToBES>
<BESQueueName>com.abc.gateway.JMSQueue.forAddRequest</BESQueueName>
<BESTransform/>
<BESJMSProperties>
<property>
<propName>stateCode</propName>
<propValue>OK</propValue>
</property>
<property>
<propName>stateResponse</propName>
<propValue>OK</propValue>
</property>
</BESJMSProperties>
等等
你見過SAX? – kan
@Jeremy:我們需要將XML中的多個片段製作成一個DTO對象 - 這可能很容易嗎? – romesub
你能否提供關於文檔結構的更多細節?例如,是否有一個常見的消息頭需要解析以確定合適的處理程序,並且是一個節點下的主體還是許多兄弟節點? –