有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是解析器实现中文档的功能

最近我在研究解析器,包括用于构建解析器的设计模式。我选择的例子是javax。xml。解析器和组织。w3c。dom包

看起来像是用来在这些包中设计解析器结构的工厂和生成器模式。DocumentBuilderFactory将返回一个直接工厂来构建DocumentBuilder。然后,DocumentBuilder使用其parse()方法解析xml文件;但在本例中,返回类型是Document:Document doc = builder.parse(in);

但是,我在这里没有看到的是,Document是一个接口,它包含大量操作XML属性的方法。它还扩展了节点接口。我们仍然可以将其操作称为:doc.hasAttributes()doc.getChildNodes()

我花了一个小时研究这个,但仍然无法理解这个架构背后的逻辑:

1)这些文件的方法在哪里实施

2)为什么在解析后返回接口类型对象(文档)来表示DOM对象更好


共 (2) 个答案

  1. # 2 楼答案

    DocumentNodeElement和所有其他类型都是接口。有几个库为这些接口提供了实现——一个突出的例子是ApacheXerces。从他们的头版:

    Xerces2 also provides a complete implementation of the Document Object Model Level 3 Core and Load/Save W3C Recommendations and provides a complete implementation of the XML Inclusions (XInclude) W3C Recommendation.

    如果您确实需要知道实际使用的是哪个DOM实现,请启动调试器或将Document对象的类名转储到console/log