2013-05-16 77 views
0

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

使用案例:

假设我们有Afile1.xml从A

<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,Bfile 2
  • 从文件中选取值并更新表中的值。

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

谢谢

+0

“最佳”是什么?要么可以做到这一点,尽管目前还不清楚你实际需要做什么。 –

+0

选择您最熟悉的语言,框架和工具,然后构建它。一旦你运行了,那么你可以优化它,并试图找出其他工具是否可以更好地工作。预成熟优化非常有效。 –

+0

只是想了解我应该先看哪里。我在xml解析方面没有任何经验,并且我对Java和perl语言都很满意。 – akashr

回答

4

恕我直言,最好的办法是停下来想一想:是否有机会,人们还没有普遍建立XML解析器?

谢谢第二,二,三......哦,天啊!他们确实已经做到了!

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

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

如果您决定使用关系数据库,请先阅读JDBC,但不要直接使用它。当你明白它是如何工作的时候,请阅读JPA并思考如何将它用于你的任务。

享受:)

+0

JAXB似乎很有帮助。但它会帮助我创建通用的XML解析器吗?我不这么认为。如果我使用JAXB,则需要为每个新的xml文档创建新的定义,以及与每个新文件对应的新类,dao。这正是我想要避免的。 – akashr

1

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

问问自己,你是否要执行下列规定:

  • 字符编码范围广编码的
  • 参数实体
  • 外部的DTD
  • 内部的DTD
  • 一般实体
  • CDATA部分
  • v alidation
  • 独立
  • 处理指令

和更大量。

如果你不了解任何这些,那么你的解析器将被破坏。好吧,如果你仍然想要这样做,请阅读规范。再次阅读规范。查找OASIS提供的1000多个一致性测试。确保你的解析器符合所有这些。

然后测试它。 alpha,beta。

你忘了命名空间吗?

只有然后释放它才能使用。