【问题标题】:Writing an XML rule parser in java用java编写一个XML规则解析器
【发布时间】:2016-12-08 12:19:27
【问题描述】:

我有一个复杂的 xml 文件,其中包含多级元素。我必须解析 XML 文件并根据存在的元素,我必须处理传入的请求。我可以使用 JAXB 生成类并解析 xml。但是要遍历多级元素并与规则匹配会使程序过于复杂和繁重(导致4-5级循环)。有没有一种更高效、更轻松的方法来实现这一目标?

【问题讨论】:

  • 请演示导致问题的 4-5 级循环。就目前而言,不清楚你在问什么。

标签: java xml xml-parsing jaxb


【解决方案1】:

根据您是否需要临时存储(或不)读取的数据,您可以依靠这些解析器:

  • DOM(文档对象模型)解析器将 XML 数据存储到内存结构中。
  • jDOM (Java DOM) 解析器是 Java 中类似 DOM 的实现,具有自己的 API。
  • SAX(XML 的简单 API)解析器完全异步地遍历 XML 流,为每个读取数据抛出用户事件。
  • StAX(XML 流 API)解析器同步读取 XML 流。

所有这些都可以在任何标准运行时 (JRE) 中找到,除了 jDOM,它是开源的。

因此,如果您正在寻找一种有效的方式来处理 XML 并根据读取的数据做出决定,那么 StAX 可能会满足您的需求,因为一旦您获得所需的数据,您可能会停止读取并丢弃输入 XML 的其余部分。

更新

要对整个文档应用匹配规则,我建议您使用 XPath over DOM。

【讨论】:

  • 问题不在于解析 xml 文件。真正的问题是遍历解析的 XML,检查标签和属性并根据它们采取行动。由于有多个层次的元素,代码得到了5-6层次的循环,变得非常脆弱。
  • 您必须处理整个 XML,还是只处理一些选定的数据才能做出进一步的决定?
  • 不,我必须解析整个 xml,并根据存在的元素调用不同的函数。
  • 好的。你想过使用 XPATH 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-17
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
相关资源
最近更新 更多