通过yahoo api搜索,如何将得到的xml一行一行打印出来?

myjlh 2009-08-10 09:36:28

public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
{
String baseUrl = "http://api.search.yahoo.com/WebSearchService/V1/webSearch?appid=YahooDemo&ei=gb2312&type=all";
String query = request.getParameter("query");
query = new String(query.getBytes("ISO8859-1"),"gb2312");
query = URLEncoder.encode(query,"gb2312");
query = "&query="+query;
String results = request.getParameter("results");
results = "&results="+results;
String url = baseUrl+query+results;
HttpURLConnection con = (HttpURLConnection)new URL(url).openConnection();
con.setRequestMethod("GET");
response.setContentType("text/xml");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
String line = null;
while ((line = reader.readLine())!=null){
line = new String(line.getBytes(),"gb2312");
out.println(line);
}
out.flush();
out.close();
}

得到的XML:

<?xml version="1.0" encoding="UTF-8"?>
<ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:yahoo:srch"
xsi:schemaLocation="urn:yahoo:srch http://api.search.yahoo.com/WebSearchService/V1/WebSearchResponse.xsd"
type="web" totalResultsAvailable="316000000" totalResultsReturned="10"
firstResultPosition="1"
moreSearch="/WebSearchService/V1/webSearch?query=%E6%96%B0%E6%B5%AA&appid=YahooDemo&region=us">

<Result>
<Title>新浪首页</Title>
<Summary>
新浪网为全球用户24小时提供全面及时的中文资讯,内容覆盖国内外突发新闻事件、体坛赛事、娱乐时尚、产业资讯、实用信息等,设有新闻、体育、娱乐、财经、科技
、房产、汽车等30多 ... 新浪09地产排行榜. 京东名盘 搜索引擎. 紫御府,新复式大宅. 山河海泉林石之宅.
故宫北岸中轴国际. 你看,80后都买房了. 北四环上, ...
</Summary>
<Url>http://www.sina.com.cn/</Url>
<ClickUrl>http://www.sina.com.cn/</ClickUrl>
<DisplayUrl>www.sina.com.cn/</DisplayUrl>
<ModificationDate>1241938800</ModificationDate>
<MimeType>text/html</MimeType>
<Cache>
<Url>
http://uk.wrs.yahoo.com/_ylt=A0PDB2IqQhZKCDMBdQDdmMwF;_ylu=X3oDMTBwOHA5a2tvBGNvbG8DdwRwb3MDMQRzZWMDc3IEdnRpZAM-/SIG=17cv93er5/EXP=1243059114/**http%3A//66.218.69.11/search/cache%3Fappid=YahooDemo%26ei=UTF-8%26type=all%26query=%25E6%2596%25B0%25E6%25B5%25AA%26results=10%26u=www.sina.com.cn/%26w=%25E6%2596%25B0%25E6%25B5%25AA%26d=WO48w0xISxu2%26icp=1%26.intl=us
</Url>
<Size>419296</Size>
</Cache>
</Result>

<Result>
<Title>sohu-sina-163 on Flickr - Photo Sharing!</Title>
<Summary>
新浪 sina 搜狐 sohu 网易 163 alexa 数据 ... Explore Page Last 7 Days
Interesting Popular Tags Calendar Most Recent Uploads ...
World Map Places The Commons Creative ...
</Summary>
<Url>http://flickr.com/photos/11996695@N03/1249958138/</Url>
<ClickUrl>
http://flickr.com/photos/11996695@N03/1249958138/
</ClickUrl>
<DisplayUrl>
flickr.com/photos/11996695@N03/1249958138/
</DisplayUrl>
<ModificationDate>1240988400</ModificationDate>
<MimeType>text/html</MimeType>
<Cache>
<Url>
http://uk.wrs.yahoo.com/_ylt=A0PDB2IqQhZKCDMBigDdmMwF;_ylu=X3oDMTBwYTZ1aGtmBGNvbG8DdwRwb3MDOARzZWMDc3IEdnRpZAM-/SIG=186ip5sva/EXP=1243059114/**http%3A//66.218.69.11/search/cache%3Fappid=YahooDemo%26ei=UTF-8%26type=all%26query=%25E6%2596%25B0%25E6%25B5%25AA%26results=10%26u=flickr.com/photos/11996695@N03/1249958138/%26w=%25E6%2596%25B0%25E6%25B5%25AA%26d=FreSa0xISy6M%26icp=1%26.intl=us
</Url>
<Size>60026</Size>
</Cache>
</Result>

</ResultSet>
<!-- ws02.ydn.gq1.yahoo.com uncompressed Thu May 21 23:11:54 PDT 2009 -->


我希望循环得到:

第一个:
Title:新浪首页
Summary:新浪网为全球用户24小时提供全面及时的中文资讯,内容覆盖国内外突发新闻事件、体坛赛事、娱乐时尚、产业资讯、实用信息等,设有新闻、体育、娱乐、财经、科技
Url:http://www.sina.com.cn
ModificationDate:1241938800
...全文
161 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
myjlh 2009-08-21
  • 打赏
  • 举报
回复
Help.........
myjlh 2009-08-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sdmrauquin 的回复:]
推荐你去看看 关于 XSL 方面的东西

以前我做爬虫 取道了流生成的xml文件,就是通过他来过量得到想要的内容
[/Quote]

对对!!!
xtbzqw 2009-08-10
  • 打赏
  • 举报
回复
你既然都能够得到xml了,就可以通过解析xml可以实现啊,你说的你得到的是流,你直接把你得到的流传进去就可以!
zhang_yu_QIN 2009-08-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sysmaid 的回复:]
要是效率方面要求不大。。可以考虑写文件。。
HttpURLConnection con = (HttpURLConnection)new URL(url).openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
或者不要用流。。可以参考下采集怎么写的,认识一朋友有写这东西,但不给我核心代码,ORZ、、
[/Quote]

顶..
yangkangoo12 2009-08-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 myjlh 的回复:]
引用 1 楼 closewbq 的回复:
通过jdom读取吧


jdom是读取现有xml文件吧?

现在生成的是xml流,怎么直接读取xml流呢?
[/Quote]

jdom 也可以读取字节流的
sysmaid 2009-08-10
  • 打赏
  • 举报
回复
要是效率方面要求不大。。可以考虑写文件。。
HttpURLConnection con = (HttpURLConnection)new URL(url).openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
或者不要用流。。可以参考下采集怎么写的,认识一朋友有写这东西,但不给我核心代码,ORZ、、
myjlh 2009-08-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 closewbq 的回复:]
通过jdom读取吧
[/Quote]

jdom是读取现有xml文件吧?

现在生成的是xml流,怎么直接读取xml流呢?
closewbq 2009-08-10
  • 打赏
  • 举报
回复
通过jdom读取吧
SDMRauquin 2009-08-10
  • 打赏
  • 举报
回复
推荐你去看看 关于 XSL 方面的东西

以前我做爬虫 取道了流生成的xml文件,就是通过他来过量得到想要的内容
sangshusen_1988 2009-08-10
  • 打赏
  • 举报
回复
读取文件还不是通过流读取的

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧