通用XML解析器设计分析

时间:2013-05-16 12:18:41

标签: java xml database parsing xpath

我们需要创建一个通用的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中是否有任何框架可以帮助您轻松构建所需的系统。

谢谢

2 个答案:

答案 0 :(得分:4)

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

感谢第二,二,三......哦,天啊!当然他们已经做到了!

好的,现在让我们来寻找解析XML的方法。从一些谷歌搜索开始。找到SAX和DOM。阅读它们,但等一下!不要开始实现您的真实应用程序。看看JAXB。稍微了解一下。现在提示:看看@XmlAnyElement。这是您执行通用XML解析所需要的。

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

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

享受:)

答案 1 :(得分:1)

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

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

  • 各种编码的字符编码
  • 参数实体
  • 外部DTD
  • 内部DTD
  • 一般实体
  • CDATA部分
  • 验证
  • 独立
  • 处理说明

还有更多。

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

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

然后测试它。 alpha,beta。

您是否忘记了名称空间?

然后才释放它以供使用。