答案 0 :(得分:4)
万维网联盟已将Document Object Model (DOM)定义如下:
文档对象模型是平台和语言中立 允许程序和脚本动态访问的接口 并更新文件的内容,结构和风格。
许多语言的实现看起来非常像彼此,聪明人认为这是一个好主意,很多年前他们设计它时。 因此,它看起来并不像任何语言中熟悉的任何东西。
如果要使用看起来像Java库的w3c DOM的替代方法,请使用JDOM。或者使用映射/绑定解决方案将XML映射到Java对象,例如JAXB
但是如果你需要与已经使用w3c DOM的现有库(如内置的XSLT和XSD处理器)进行交互,那么你就会坚持下去。不幸的是
到@eis:
是的,您有理由不能将Iterable
等接口添加到NodeList
,原因是文档对象模型的Java绑定在{{ 3}}。取NodeList
,它在标准中100%定义。没有任何额外接口的空间。
<强>组织/ W3C / DOM / NodeList.java:强>
package org.w3c.dom;
public interface NodeList {
public Node item(int index);
public int getLength();
}
C#标准中没有绑定,但有一个用于EcmaScript。我相信你提到的IXMLDocument接口也用于他们的EcmaScript实现(但我可能是错的),在这种情况下,他们仍然需要在他们支持的方法和类型层次结构方面坚持标准。 / p>
不同之处在于EcmaScript绑定仅描述了应存在的方法,而Java绑定则描述了接口中的确切方法。
但是在Java中没有理由认为实现NodeList
的类也不能实现Iterable
。但是,如果您的代码依赖于它,那么它将无法与DOM标准一起使用,而只能使用特定的实现。
微软从未真正打过这种精细的区别,因为他们通常不会满足多个符合标准的实施 - 如果你使用微软标有的任何方法&#34; *表示对世界的扩展Wide Web Consortium(W3C)DOM。&#34;在Microsoft的实现中,您没有使用DOM标准。