gpt4 book ai didi

java - 如何在 Java 中一次解析 DTD 文件而不进行任何验证

转载 作者:太空宇宙 更新时间:2023-11-04 08:13:45 30 4
gpt4 key购买 nike

我收到了一个无效的 DTD 文件,该文件包含重复的元素并且元素不相同:

<!ELEMENT Data (Name, address?)>
<!ELEMENT Data (Name, age)>

我需要编写一个实用程序来读取 DTD 并合并元素,如下所示:

<!ELEMENT Data (Name, address?, age)>

我似乎无法找到一个允许我一次只解析一个元素的 java 库(如 SAX)。

我真正想要的是阅读<!ELEMENT Data (Name, address?)>转换为数据结构,例如数组映射或类似的东西。

任何指示将不胜感激。

最佳答案

在我看来,您必须立即读取所有 DTD 元素,否则您无法像示例中所示将它们配对。

因为 DTD 描述可以任意嵌套 (...) 正则表达式在理论上无法为您提供帮助。实际上,大多数 DTD 元素只有一层或两层 (...),因此它们可能会起作用。如果您的问题基本上与您所显示的一样,您可以仅通过字符串黑客来完成此操作,然后手动修复其余部分。 (阅读单行不会减少它;元素描述可以跨多行并以“...>”结尾,您必须找到它)。

如果您想要一种可靠的自动化方法,您需要相当于一个program transformation system 。 DTD 是一种特殊类型的形式系统;您需要一个工具来读取正式描述的实例,使您能够读取和更新表示实例的数据结构(通常称为抽象语法树),并将结果重写为有效的源文本。

不是Java,而是我们的DMS Software Reengineering Toolkit就是这样一个程序转换引擎。它有一个能够解析 DTD 的 XML 前端,事实上,我们已经使用这些 DTD 构建了代码生成器。

关于java - 如何在 Java 中一次解析 DTD 文件而不进行任何验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10778977/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com