0

我们需要创建一个通用的 XML 解析器和规则引擎来读取 XML 文件并将数据存储在适当的表中。

用例:

假设我们有来自 A 的 Afile1.xml

<x>
  <y>1</y>
  <z>a</z>
<x>

以及数据库中的映射,例如

Source  FileName  Field             Path   
A        Afile1   table1.value1     /x/y
B        Bfile7   table1.value1     /p/q/r
A        Afile1   table1.value2     /x/z 

我们需要设计一个系统

  • 读取 xml 文件 Afile1,Bfile2
  • 从文件中选择值并更新表中的值。

设计此类系统的最佳平台是什么,perl 或 Java。观察我们需要使用 xpath 解析大量的 xml。Java中是否有任何框架可以帮助轻松构建所需的系统。

谢谢

4

2 回答 2

4

恕我直言,最好的方法是停下来思考:人们是否还没有构建通用 XML 解析器?

谢谢一、二、三……哦,我的上帝!他们肯定做到了!

好的,现在让我们寻找解析 XML 的方法。从一些谷歌搜索开始。查找 SAX 和 DOM。阅读有关它们的信息,但请稍等!不要开始实现您的实际应用程序。看看JAXB。稍微学习一下。现在提示:看看@XmlAnyElement. 这可能是您执行通用 XML 解析所需要的。

好的,现在您可以将 XML 文档转换为适当的 java 对象。下一阶段是将对象存储在数据库中。这是一个问题:使用哪个数据库?我真的需要关系数据库吗?提示:您可能不需要。可能您可以使用能够按原样存储对象的 NoSql 实现之一。例如 MongoDB。

但是,如果您决定使用关系数据库,请先阅读有关 JDBC 的信息,但不要直接使用它。当您了解它的工作原理时,请阅读 JPA 并思考如何将它用于您的任务。

享受 :)

于 2013-05-16T12:40:08.690 回答
1

如果您创建一个 XML 解析器(我同意 @AlexR,不要),那么您必须创建一个完全符合的解析器。仅实现一半规范的“XML 解析器”不是 XML 解析器。这是一种威胁。

问问自己是否要实施以下内容:

  • 适用于各种编码的字符编码
  • 参数实体
  • 外部 DTD
  • 内部 DTD
  • 一般实体
  • CDATA 部分
  • 验证
  • 独立的
  • 加工说明

还有更多。

如果您不理解其中任何一个,那么您的解析器将被破坏。

好的,如果您仍然想这样做,请阅读规范。再次阅读规范。查找 OASIS 提供的 1000 多项一致性测试。确保您的解析器符合所有这些要求。

然后测试它。阿尔法,贝塔。

你忘记命名空间了吗?

然后才释放它以供使用。

于 2013-05-16T12:43:46.690 回答