gpt4 book ai didi

java - 围绕 StAX 解析设计类

转载 作者:数据小太阳 更新时间:2023-10-29 02:52:17 25 4
gpt4 key购买 nike

这是一个设计问题而不是特定于 Java 的问题,但我正在为 Java 设计它。

我一直在编写一些 XML 拉式解析类来处理自定义 XML 响应,在设计它们时,我忍不住想是否有更好的东西。也许有人甚至有它的设计模式。

所以,我的 XML 可能是这样的:

<ResponseRoot>
<Header>
<RequestId />
<OtherHeaderMetaData />
</Header>
<Body>
...
<!-- Lots of other elements and nested elements -->
...
</Body>
</ResponseRoot>

因此,根据 RequestId(各种键),Body 元素是不同的。鉴于这是拉式解析,我会有一个很大的 switch 语句和很多 if-else-if block 。

用一个具有大量静态方法的类来处理整个 XML 流会更有效,还是让一个类负责每个 RequestId 会更有效?

我正在考虑将 RequestId 映射到类名,然后当我点击 Body 时,我使用工厂来检索适当的子解析器。在该工厂内部,我什至可以使用 Class 实例的映射并使用反射来实例化适当的解析器(因为并非所有解析器都需要一直使用)。或者...改为使用反射获取适当的静态解析方法,因此我不需要实例化实际上只是 1-use 类的解析器...

是的,我想得太深了,但由于这只是一个个人项目,我只是很好奇人们如何围绕 StAX 解析器设计解析类。

最佳答案

So depending on the RequestId (a key of sorts), the Body element is different.

您能否重新设计 XML,使有效的正文元素不依赖于请求 ID,而完全由周围的响应元素决定?然后文档有效性(符合 DTD)将对应于消息响应有效性。

不要使用 switch 语句,考虑使用 state design pattern .也就是说,将您的文档处理程序实现为有限状态机。

关于java - 围绕 StAX 解析设计类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4714160/

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