【问题标题】:DTD parsing in JavaJava中的DTD解析
【发布时间】:2012-03-24 01:00:35
【问题描述】:

我有一个给定的 DTD,即

<!ELEMENT dblp (article|inproceedings|proceedings)*>
<!ENTITY % field "author|editor|title|booktitle|pages">

<!ELEMENT article       (%field;)*>
<!ATTLIST article
                    key CDATA #REQUIRED
                    mdate CDATA #IMPLIED
                    publtype CDATA #IMPLIED
                    reviewid CDATA #IMPLIED
                    rating CDATA #IMPLIED
>

我需要将其转换为 XML 表单,即

<element>
    <name>article</name>
    <attribues>
         <attr>key</attr>
         <attr>mdate</attr>
         ...
    </attributes>
</element>
...

我宁愿自己不解析 DTD。我正在寻找一个库,但大多数 DOM/SAX 库只处理 XML。我确实找到了 NekoDTD,但它几乎是 8yo 并且没有更新...

那你有什么推荐的?

【问题讨论】:

  • 尝试 google 搜索“dtd parser”,前 4 名都是用于 java 的开源 dtd 解析器。
  • 你推荐哪个特定的 Java 库?我需要公共 MVN 存储库上提供的 smt

标签: java xml dtd


【解决方案1】:

我需要将类型定义从 DTD 转换为更多的 Java-Bean 友好的 XML 表单。

您可以使用带有-dtd 标志工具的 JAXB XJC 从 DTD 生成域模型。

xjc -p blog.log4j -d out -dtd log4j.dtd

更多信息

【讨论】:

  • 我不需要类/实例。我需要生成一个 XML 文件 :-(
  • 在您对@Mentezza 给出的答案的评论中,您说您需要Java-Bean friendly XML form。此答案描述了如何生成可用于生成所需 XML 的 Java-Bean 模型。如果这不是您要查找的内容,请告诉我,我将删除此答案。
  • 运行 Xjc 可能是一种有用的技术。使用 xjc -p tgt -d out -dtd 01-02-16.dtd,其中 01-02-16.dtd 是完整的 UML DTD(稍作修改以修复两个元素上的名称空间冲突),可以立即生成 386 个机器-用于进一步处理的可读 Java 文件。
【解决方案2】:

请注意,根据给定的 DTD,存在无限的有效 XML 文件。您正在寻找的框架只会生成一个小子集(但它可能足以满足您的目的:它到底是什么?)

【讨论】:

  • 我需要将类型定义从 DTD 转换为对 Java-Bean 更友好的 XML 表单。注意 - 我不需要 DTD 来验证任何 XML - 我需要它作为我的应用程序中类型定义的基础
猜你喜欢
  • 1970-01-01
  • 2017-08-19
  • 2014-12-11
  • 2016-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 2014-09-28
相关资源
最近更新 更多