基於上下文解析,意味著首先解析字符串,然後還要解析結果插入到另一個文檔中。此時使用的parseWithContext()方法接受3個參數:LSInput對象、上下文節點和要執行的操作。其中,LSInput對象的stringData屬性中必須包含XML片段的代碼,不能含有XML序言內容。上下文節點是解析完成片段應該插入的地方。而要執行的操作必須是下列LSParser常量之一。
在發生解析錯誤的情況下,以上操作均會被取消。下面的例子展示了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文檔片段所需的代碼量。