Html 在XPCOM自动完成组件中解析DOM

Html 在XPCOM自动完成组件中解析DOM,html,firefox,dom,firefox-addon,xpcom,Html,Firefox,Dom,Firefox Addon,Xpcom,我知道在接收远程“自动完成建议”时应该使用JSON,但我不得不使用标准的DOM有效XHTML 我已经注册了interfacensIAutoCompleteSearch的组件,并使用此代码通过XmlHttpRequest获取远程XHTML var request = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"] .createInstance(Components.interfaces.nsIXMLHtt

我知道在接收远程“自动完成建议”时应该使用JSON,但我不得不使用标准的DOM有效XHTML

我已经注册了interface
nsIAutoCompleteSearch
的组件,并使用此代码通过XmlHttpRequest获取远程XHTML

var request = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
        .createInstance(Components.interfaces.nsIXMLHttpRequest);
到目前为止还可以。然后我从
request.responseText
接收文本,我需要解析DOM并获取值,而regexp也过于复杂

下面是一个带有错误的代码:

Components.classes["@mozilla.org/feed-unescapehtml;1"]
                    .getService(Components.interfaces.nsIScriptableUnescapeHTML)
                    .parseFragment(request.responseText, false, null, document);
表示未定义文档时出错。因为我在XPCOM组件中,所以无法访问页面的DOM或XUL覆盖。此代码取自

我试图创建
nsIDOMDocument
nsIDOMHTMLDocument
的实例,并从
@mozilla.org/dom/core加载它们;1
@mozilla.org/dom/html;1
,但这些软件包似乎无法访问(错误说明
组件。类['@mozilla.org/dom/core;1']未定义

那么,有没有一种方法可以创建新的DOMDocument,以HTML的形式插入
request.responseText
,然后遍历它的DOM结构呢

给定链接中的函数
HTMLParser
正在抛出与未定义的
文档相同的错误


谢谢

如果服务器响应是格式良好的XHTML,那么只需使用请求对象的responseXML成员即可

但是,这仅在服务器返回内容类型text/xml时有效。否则,可以使用将MIME类型强制为text/xml

最后一种可能是像原始问题一样手动解析文档。不过我会用的。您可以从XPCOM组件使用它,如下所示:

var parser = Cc["@mozilla.org/xmlextras/domparser;1"].
  createInstance(Ci.nsIDOMParser);  
var doc = parser.parseFromString(aStr, "text/xml");

responseXML==null
表示格式不正确?响应的内容类型是什么?它需要是text/xml。
内容类型:text/html;charset=UTF-8
而且我不能更改服务器端,所以我不能使用
responseXML
,不是吗?@Matthew:
XMLHttpRequest.overrideMimeType