2.2 如何使用DOM
DOM标准定义了很多API,http://www.w3.org/TR/DOM-Level-3-Core/core.html
在Mozilla中,DOM内核接口提供如下:idl是interface文件后缀。
sunlit@ubunt:~/mozilla-central/dom/interfaces/core$ ls
Makefile.in nsIDOMDOMLocator.idl
nsIDOM3Attr.idl nsIDOMDOMStringList.idl
nsIDOM3Document.idl nsIDOMElement.idl
nsIDOM3Node.idl nsIDOMEntity.idl
nsIDOM3Text.idl nsIDOMEntityReference.idl
nsIDOM3TypeInfo.idl nsIDOMNamedNodeMap.idl
nsIDOMAttr.idl nsIDOMNameList.idl
nsIDOMCDATASection.idl nsIDOMNode.idl
nsIDOMCharacterData.idl nsIDOMNodeList.idl
nsIDOMComment.idl nsIDOMNodeSelector.idl
nsIDOMDocumentFragment.idl nsIDOMNotation.idl
nsIDOMDocument.idl nsIDOMNSDocument.idl
nsIDOMDocumentType.idl nsIDOMNSEditableElement.idl
nsIDOMDOMConfiguration.idl nsIDOMNSElement.idl
nsIDOMDOMErrorHandler.idl nsIDOMProcessingInstruction.idl
nsIDOMDOMError.idl nsIDOMText.idl
nsIDOMDOMException.idl nsIDOMUserDataHandler.idl
nsIDOMDOMImplementation.idl nsIDOMXMLDocument.idl
2.2.1 创建DOM对象(树)
var doc = document.implementation.createDocument("", "", null); var peopleElem = doc.createElement("people"); var personElem1 = doc.createElement("person"); personElem1.setAttribute("first-name", "eric"); personElem1.setAttribute("middle-initial", "h"); personElem1.setAttribute("last-name", "jung");
如果你熟悉ActiveX,那就基本原样照办。不熟悉没问题,照猫画虎就可以了。创建文档、然后元素成树。
唯一要注意的是如果使用Sarissa,那就要用Sarissa创建文档,否则支持不了。
2.2.2 从文件中读数据到DOM,或者动态创建数据
在nsIDOMXMLDocument.idl里面提供了load方法,使用myXML.load之类的命令很容易读取数据。或者像上面的例子慢慢设置。load默认的读取数据方式是异步。
2.2.3 可以用了,保存数据和其他
现在你可以利用DOM丰富的API了。可以把树转换、保存成XML等等。
有一篇很好的文章(https://developer.mozilla.org/cn/使用Javascript和DOM_Interfaces来处理HTML)解释了DOM在动态内容的功能。
至于DOM如何实现,就不在这里罗嗦了。在了解了DOM标准和接口 后,源代码很容易看。