Html 在XPCOM自动完成组件中解析DOM
我知道在接收远程“自动完成建议”时应该使用JSON,但我不得不使用标准的DOM有效XHTML 我已经注册了interfaceHtml 在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
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
?