首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >org.w3c.dom.NodeList不能扩展Iterable

org.w3c.dom.NodeList不能扩展Iterable
EN

Stack Overflow用户
提问于 2014-03-27 15:24:34
回答 1查看 568关注 0票数 6

为什么Java org.w3c.dom库的作者选择不支持艾特雷接口呢?例如,接口NodeList似乎非常适合扩展Iterable。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-27 15:37:58

万维网联盟将文档对象模型(DOM)定义如下:

文档对象模型是一个与平台和语言无关的接口,它允许程序和脚本动态访问和更新文档的内容、结构和样式。

很多语言的实现看起来非常相似,很多年前,聪明人在设计时认为这是个好主意。因此,在任何语言中,它看起来都不像熟悉的任何东西。

如果您想使用类似于w3c库的Java的替代方案,请使用JDOM。或者使用映射/绑定解决方案(如JAXB )将XML映射到Java对象

但是,如果您需要与已经使用w3c DOM的现有库(比如内置的XSLT和XSD处理器)进行接口,那么您就只能使用它了。不幸的是。

转至@eis:

是的,您不能将诸如Iterable这样的接口添加到NodeList中是有原因的,这是因为文档对象模型的Java是在标准中定义的。以NodeList为例,它在标准中是100%定义的。没有任何额外的接口空间。

org/w3c/dom/NodeList.java:

代码语言:javascript
复制
package org.w3c.dom;

public interface NodeList {
    public Node item(int index);

    public int getLength();

}

在C#的标准中没有绑定,但是对于EcmaScript有一个绑定。我相信您提到的IXMLDocument接口也用于它们的EcmaScript实现(但我可能错了),在这种情况下,它们仍然需要在所支持的方法和类型层次结构方面坚持标准。

不同之处在于,EcmaScript绑定只描述应该存在哪些方法,而Java则描述接口中的确切方法。但是,在Java中,实现NodeList的类也不可能实现Iterable。但是,如果您的代码依赖于此,那么它将不适用于DOM标准,而只适用于特定的实现。

微软从未真正为这种细微的区别感到烦恼,因为它们通常不适合符合多个标准的实现--如果您使用任何微软标记为"* Denotes是对万维网联盟(W3C) DOM的扩展“的方法。在Microsoft的实现中,您没有使用DOM标准。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22692087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档