基于上下文解析parseWithContext()方法


基于上下文解析,意味着首先解析字符串,然后还要解析结果插入到另一个文档中。此时使用的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文档片段所需的代码量。


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3