18JavaScript与XML

18.1.浏览器对XML DOM的支持

DOM2级核心

常见的情况是将某个XML文档解析为DOM结构,或者反之。

DOMParser类型

在解析XML之前,首先必须创建一个DOMParser的实例,然后再调用parseFromString()方法,这个方法接收两个参数:要解析的XML字符和内容类型。

XMLSreializer类型

DOMSerializer类型可以将DOM文档序列化为XML字符串。要序列化DOM文档,首先必须创建XMLSerializer的实例,然后将文档传入其serializeToString()方法。

IE8及之前版本中的XML

IE是第一个原生支持XML的浏览器,而这一支持是通过ActiveX对象实现的。要创建一个XML文档,也要使用ActiveXObject构造函数被为其传入一个表示XML文档版本的字符串。有6种不同的XML文档的实例,微软只推荐使用MSXML2.DOMDocument.6.0或MSXML2.DOMDocument。3.0,前者是最新最可靠的版本,而后者则是大多数Windows操作系统都支持的版本。

要解析XML字符串,首先必须创建一个DOM文档,然后调用loadXML()方法。要创建的XML文档完全是一个空文档,因而不能对其执行任何操作。为loadXML()方法传入的XML字符串经解析之后会被填充到DOM文档中。如果解析过程中出错,可以在parseError属性中找到错误消息。

跨浏览器处理XML

18.2浏览器对XPath的支持

XPath是设计用来在DOM文档中查找节点的一种手段。

DOM3级XPath

最重要的两个类型是XPathEvaluator和XPathResult。XPAthEvaluator用于在特定的上下文中对XPath表达式求值,有3个方法CreateExpression(expression,nsresolver):将XPath表达式及相应的命名空间信息转化成一个XpathExpression;createNSRsolver(node):根据node的命名空间信息创建一个新的XPathNSResolver对象;evaluate(expression,context,nsresolver,type,result):在给定的上下文中,基于特定的命名空间信息来对XPath表达式求值,第4个参数的取值:XPathResult.ANY_TYPE,XPathResult.NUMBER_TYPE,XPathResult.STRING_TYPE,XPathResult.BOOLEAN_TYPE,

XPathResult.UNORDERED_NODE_ITERATOR_TYPE,XPathResult.ORDERED_NODE_ITERATOR_TYPE,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,XPathResult.ANY_UNORDERED_NODE_TYPE,XPathResult.FTRET_ORDERED_NODE_TYPE.如果节点是一个节点迭代器,必须使用iterateNext()方法从节点中取得匹配的节点。如果指定的是快照结果类型,必须使用snapshotItem()方法和snapshotLength属性。

单节点结果(XPathResult.FTRET_ORDERED_NODE_TYPE),可以通过结果的singleNodeValue属性来访问该节点。

简单类型节点(XPathResult.NUMBER_TYPE,XPathResult.STRING_TYPE,XPathResult.BOOLEAN_TYPE):分别通过booleanValue、numberValue和stringValue属性返回一个值。

默认类型结果(XPathResult.ANY_TYPE):结果类型可能是布尔值、数值、字符串或一个次序不一致的节点迭代器,结果类型用resultType属性检测。

处理命名空间的第一种方法是通过createNSResolver()来创建XPathNSResolver对象。第二种方法是定义一个函数,让它接收一个命名空间前缀,返回关联的URI。

IE中的XPath

为了在IE9及之前的版本中使用XPath,必须使用基于ActiveX的实现,这个接口在每个节点上额外定义了两个方法:selectSingleNode()接收一个XPath模式作为参数,返回与模式匹配的第一个节点;selectNodes()也接收一个XPath模式作为参数,返回与模式匹配的所有节点的NodeList。

命名空间的处理:创建一个字符串,将这个字符传入到XML DOM文档对象的特殊方法setProperty()中。

跨浏览器使用XPath

18.3浏览器对XSLT的支持

XSLT是与XML相关的一种技术,利用XPath将文档从一种表现形式转化为另一种表现形式。

IE中的XSLT

使用XSLT样式表转换XML文档最简单方式,就是将它们分别加到一个DOM文档中,然后再使用transformNode()方法。

复杂的XSLT转换是把XSLT样式表加载到一个线程安全的XML文档中(这可以通过ActiveX对象MSXXML2.FreeThreadedDocument来做到)。在创建和加载了自由线程的DOM文档之后,必须将它指定给一个XSL模板。

XSLTProcessor类型

原文地址:https://www.cnblogs.com/dingzibetter/p/6431805.html