gpt4 book ai didi

用于处理大型 XML 的 Java OO 设计

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:37:42 26 4
gpt4 key购买 nike

我们正在设计一个处理 XML 消息的系统。

处理 Java 类需要从较大的 XML 中分离出各种属性和值,并将它们作为参数传递给各个处理程序类以进行各种操作。

我们考虑了以下选项:

一个)

将整个 XML 传递给每个处理程序并让它提取相关位 - 但感觉每次都传递 XML 可能效率低下

B)

将 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 个 block

 <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>

等等

最佳答案

B 听起来是我的最佳选择。 A 效率最低,C 可能需要一次通过来解析它并挑选出片段,然后进行第二次通过才能正确处理它们?

使用 SAX 解析出最小的 DTO 集以传输到专用处理程序类。

好问题,顺便说一句。最好提前考虑这些事情,并获得第 2、第 3、第 4 意见:-)

关于用于处理大型 XML 的 Java OO 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7011558/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com