xml中的DTD如何使用java DOM更容易解析?

时间:2011-03-27 04:22:15

标签: java xml dom dtd

嘿朋友们, 我被分配了一个查询计划项目。 在这个项目中,如果输入一个像查询一样的sql,我必须切片并变成一个xml。 我做了这个部分,但是我需要为这个xml添加一个DTD,因为正如项目所提到的那样它有助于解析(使用java DOM)这个查询并轻松找到选择 - 查询中指定的重复和连接。

我不明白,使用DOM解析xml并找到这个xml的不同部分时,DTD如何帮助?

我可以使用DOM在没有dtd的情况下找到xml的不同部分......任何人都可以给我和差异示例吗?

感谢

2 个答案:

答案 0 :(得分:1)

DTD告诉解析器允许哪些标记,以及它们应该在文档中的位置。如果没有DTD,解析器将读取标签,但它不知道标签是否是预期的标签,或者它是否在正确的位置。

如果你使用SAX或DOM解析你的XML,那没关系,如果没有DTD(或其中一个更新的替代品,如XSD,RelaxNG等),解析器都不会知道你的标签是预期的还是意外的。 / p>

答案 1 :(得分:0)

DTD没有帮助来解析XML,但它通过定义有关文档的某些规则来提供基本验证。如果文档违反了验证规则,则解析应该失败(或产生警告消息,这应该取决于验证器配置)。他们可能称之为“有用”,因为您的DOM导航代码能够对文档结构做出更好的假设,而不必担心失败。

他们可能希望您包含DTD,否则必须从PUBLIC / SYSTEM文档标识符中识别DTD,并将其托管在某处。或者他们应该在源代码中有一个预定义的DTD(也就是这个“托管某处”的版本),如果相同的代码必须在不事先了解结构的情况下处理不同的文档,这可能不是一个选项。

关于更容易找到重复项的声明可能是因为他们计划在重复的情况下将文档丢弃;不知道对于连接有多大帮助,不知道切片和转动的细节。