基于上下文解析parseWithContext()方法
http://www.itjxue.com 2015-08-06 23:02 来源:未知 点击次数:
基于上下文解析,意味着首先解析字符串,然后还要解析结果插入到另一个文档中。此时使用的parseWithContext()方法接受3个参数:LSInput对象、上下文节点和要执行的操作。其中,LSInput对象的stringData属性中必须包含XML片段的代码,不能含有XML序言内容。上下文节点是解析完成片段应该插入的地方。而要执行的操作必须是下列LSParser常量之一。
- ACTION_APPEND_AS_CHILDREN:将解析结果作为子节点添加到上下文节点中。
- ACTION_REPLACE_CHILDREN:先移除上下文节点的所有子节点,然后将解析结果作为上下文节点的子节点插入。
- ACTION_INSERT_BEFORE:将解析结果作为上下文节点的同辈节点,插入到上下文节点前面。
- ACTION_INSERT_AFTER:将解析结果作为上下文节点的同辈节点,插入到上下文节点后面。
- ACTION_INSERT_AFTER:用解析结果替换上下文节点。
在发生解析错误的情况下,以上操作均会被取消。下面的例子展示了parseWithContext()的用法:
var implementation = document.implementation; var parser = implementation.createLSParser(implementation.MODE_SYNCHRONOUS, null); var input = implementation.createLSInput(); input.stringData = "<root/>"; var xmldom = parser.parse(input); var newInput = implementation.createLSinput(); newInput.stringData = "<child/>"; parser.parseWithContext(newInput, xmldom.documentElement, parser.ACTION_APPEND_AS_CHILDREN); alert(xmldom.documentElement.firstChild.tagName); //"child"
以上代码执行之后,<child>元素将称为<root>元素的子节点。也就是说,字符串“<child/>”将被解析为一个元素,然后作为子元素插入到上下文子节点中。这种解析方式能够有效减少基于字符串创建DOM文档片段所需的代码量。