【问题标题】:DOM4J validate xml against DTD provided at runtimeDOM4J 根据运行时提供的 DTD 验证 xml
【发布时间】:2012-09-26 12:46:24
【问题描述】:

我需要根据 DTD 验证第三方生成的多个文件;这些文件没有 dtd 声明,我无法更改,因为我不是所有者, 有没有办法通过单独提供 DTD 来使用 dom4j 验证它们?

谢谢

【问题讨论】:

  • 如果迫在眉睫,您始终可以通过在输入文档顶部插入字符串“.. SYSTEM 'my.dtd'>”的管道运行输入,在任何现有的 XML 声明之后。 (当然,如果有更简单的方法更好,但我帮不了你。)
  • 是的,这就是问题所在;我必须一次验证大约 250 个文件,所以寻找更好的选择 :-)

标签: dtd xml-validation dom4j


【解决方案1】:

您始终可以将 DTD 转换为架构(例如使用 trang),并针对每个文档的架构执行内存验证。

为此,您将使用转换后的架构创建一个 javax.xml.validation.ValidationHandler,并将其提供给 DOM4J SAXWriter

当然是另一种选择

  1. 将每个文档未经验证解析为 DOM4J Document
  2. 在解析后的文档中添加一个 DOM4j DefaultDocumentType
  3. 将文档写入临时字符串缓冲区
  4. 再次解析,但这次使用验证 SAXReader

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-05
    • 2015-12-24
    • 1970-01-01
    • 2014-03-17
    • 2010-12-12
    • 2018-07-30
    • 2010-11-22
    • 2011-09-30
    相关资源
    最近更新 更多