gpt4 book ai didi

java - 如何创建使用 SAX 解析 xml 的处理程序?

转载 作者:行者123 更新时间:2023-12-01 15:39:35 26 4
gpt4 key购买 nike

我正在使用 xerces SAX 来解析此 XML:

<product id="123">
<sku>abc123</sku>
<location>
<warehouse>1</warehouse/>
<level>3</level>
</location>
<details>
<weight unit="kg">150</weight/>
<mfg>honda</mfg>
</details>
</product>

所以我创建了自己的类,名为 ProductSAXHandler.java:

public class ProductSAXHandler extends DefaultHandler {


}

现在,我计划从我的 spring mvc Controller 将 XML 文件作为字符串传递,并且我希望返回一个 Product 对象。

因此,在我的 ProductSAXHandler 中,我将创建 startElement、endElement 方法。

那么我是否应该创建一个方法,将 xml 作为字符串,然后实例化此 ProductSAXhandler,然后调用解析?

这是我第一次处理 xml/sax,所以我有点不清楚如何设计这个类。

最佳答案

这并不能直接回答你的问题,但我会从字里行间解读一下,并重点关注你的实际意图......

由于您想要某个 Product 类的实例来封装 XML 中的数据(可能会优先选择结构化方式),因此最好使用 JAXB为了这个任务。除非您对将 XML 输入绑定(bind)到对象的定制有真正特定的要求,否则这将比使用 SAX 简单得多。

您需要做的是:

  1. 获取您的 XML 的 W3C XML 架构。如果您没有并且无法获取,那么有一些工具可以根据输入 XML 生成架构。 Trang让这变得非常容易。
  2. 从模式生成 Java 类。为此,您可以使用 Sun 的 JDK 中提供的 XJC(XML 到 Java 编译器)。如果您使用 Ant 或 Maven 等构建工具,则可以使用插件。这可以自动化该过程,使其成为完整构建的一部分。
  3. 将 JAXB API 与生成的类结合使用,可以轻松地将 XML 文档转换为对象,反之亦然。

虽然 JAXB 需要一些时间来学习(特别是如果所需的 XML-Java 映射不是一对一的话),但我认为从长远来看,您最终会节省时间。

很抱歉,如果您确实需要 SAX 并且这个答案不适用,但我想我宁愿在使用有点过时的 XML 处理模型之前让您知道您的选择。请注意,您可能还对 DOM 和 StAX 感兴趣。

关于java - 如何创建使用 SAX 解析 xml 的处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8289275/

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