使用 jQuery 解析 XML 搜索结果页
Parse XML search results page with jQuery
>Background:
我正在尝试在我正在创建的页面中包含 Google 搜索结果。这些搜索结果的格式为 XML。
目前,我正在像这样导入XML:
if (window.XMLHttpRequest) {
// Code for Internet Explorer7+, Firefox, Chrome, Opera, and Safari
xmlhttp = new XMLHttpRequest();
}
else {
// Code for Internet Explorer 6 and Internet Explorer 5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", "foo", false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
其中foo
是保存搜索结果的 XML 文件的 URL。
问题:
这非常有效,但前提是foo
以适当的扩展名结尾,例如 .xml
.这会带来一个问题,因为包含搜索结果(http://search.domain.com/search?q=queryString&output=xml
(的页面没有扩展名。
当我尝试使用搜索结果的 URL 调用xmlhttp.open()
时,xmlhttp.send()
失败,并且不会执行其后的任何函数或命令。
我已经尝试了几种不同的方法来使用 jQuery 和纯 JavaScript 导入/解析文件,但似乎都不起作用。
问题:
有没有办法只导入无扩展名文件的文本?然后,我将能够使用 parseFromString
解析文本。这将允许我获得我需要的数据,但只能通过将搜索结果中的所有文本(无论数量(复制到我的页面中。
我希望有一种方法可以允许我将无扩展名页面作为 XML 文件打开和解析。
如果您需要更多信息,请告诉我。
<小时 />这是应该返回的代码:
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE GSP SYSTEM "google.dtd">
<GSP VER="3.2">
<TM>TimeTaken(in seconds)</TM>
<Q>queryString</Q>
<PARAM name="q" value="queryString" original_value="queryString"/>
<PARAM name="output" value="xml" original_value="xml"/>
<PARAM name="ie" value="UTF-8" original_value="UTF-8"/>
<PARAM name="ulang" value="en" original_value="en"/>
<PARAM name="ip" value="ipAddress" original_value="ipAddress"/>
<PARAM name="access" value="p" original_value="p"/>
<PARAM name="sort" value="date:D:L:d1" original_value="date:D:L:d1"/>
<RES SN="1" EN="10">
<M><!-- The estimated total number of results for the search -->3560</M>
<FI/>
<NB>
<NU>/search?q=queryString&lr=&ie=UTF-8&output=xml&access=p&sort=date:D:L:d1&start=10&sa=N</NU>
</NB>
<!-- First result -->
<R N="1"> <U><!--URL of result-->http://www.google.com?option=42</U>
<UE><!--URL of result with special characters changed to html
equivalent-->http://www.google.com%3Foption%3D</UE>
<T><!--Title of result -->Google </T>
<RK><!--Query Ranking
10(highest relevance)-1(lowest relevance)-->10</RK>
<ENT_SOURCE> <!--Identifies the application ID (serial number) of the
search appliance that contributes to a result.-->
S5-KUB000F0ADETLA </ENT_SOURCE>
<FS NAME="date" VALUE=""/>
<S><!-- Snippet for the search result --> Search the world's information,
including webpages, images, videos and more. <em>Google</em> has many
special features to help you find exactly what you're looking
<b>...</b></S><LANG>en</LANG>
<HAS><!--special features that are included for this search result-->
<L/>
<C SZ="30k" CID="TiXnj_p8qlgJ" ENC="ISO-8859-1"/>
</HAS>
</R>
</RES>
</GSP>
现在我实际上仔细看了一下,谷歌在使用&output=xml
时向我承诺的XML代码看起来并不那么"xml-ey"。有没有办法解决这个问题,或者我将不得不放弃我的项目?
我能够让同样的"XML"与 php 解析器很好地工作,但我被要求将所有内容更改为 JavaScript 而不是 PHP。
由于您已经在使用 jQuery,只需使用其 .ajax 方法,该方法可以在 dataType 选项设置为"xml"时自动解析 XML。
jQuery.ajax({
url:"http://example.com/someurl",
dataType:"xml",
success:function(xml) {
//xml will be an object which you can use to access the elements.
}
});
如果正在发送正在检索的文件的内容类型,例如text/html
,您可以将dataType
更改为'text xml'
,以便jQuery知道以XML形式查看文本。
但是,如果你想继续使用vanilla JavaScript来执行Ajax请求,则必须获取.responseText
而不是.responseXML
,然后解析
var xmlDoc = new DOMParser().parseFromString(xmlhttp.responseText,'text/xml');
请注意,DOMParser并不完全受支持,例如低于9的Internet Explorer不支持它。
- AngularJS/HTML/Bootstrap元素用于动态搜索结果
- 在web应用程序中的新搜索中重新加载搜索结果(不带jQuery)
- 检查搜索结果是否存在多次如果是,则在Javascript中只显示一个结果
- 显示可链接的搜索结果+对齐方式
- 谷歌位置服务附近搜索结果基于正确的地图中心的位置
- 为自定义网站创建JavaScript搜索框,创建显示搜索结果的弹出窗口
- 主干,如何记住搜索结果
- 为什么不'我的扩展程序不会出现在Chrome网上商店的搜索结果中
- 如何从谷歌自定义搜索下载搜索结果
- (临时)在Web应用程序中存储JSON搜索结果
- Angular JS根据搜索结果和点击事件更新DOM元素
- 停止 jQuery 自动完成以过滤/搜索结果并填充整个源数组数据
- 使用 jQuery UI 折叠面板显示 couchDB 数据库搜索结果时出现问题
- 清除网格中的存储和加载搜索结果
- 引导 3 - 文本输入下的下拉搜索结果
- GoogleMapsForRails-只有在搜索结果发生变化时才通过ajax更新标记
- 如何将搜索结果显示为“搜索结果”;显示300〃中的1-10〃;
- 当至少有20个搜索结果时,只呈现10个搜索结果?使用Google Places API
- php/mysql搜索结果-当类型>1,同时保持其他类型不>1-代码点火器
- 使用 jQuery 解析 XML 搜索结果页