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&amp;appid=YahooDemo&amp;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 

解决方案 »

  1.   


    jdom是读取现有xml文件吧?现在生成的是xml流,怎么直接读取xml流呢?
      

  2.   

    要是效率方面要求不大。。可以考虑写文件。。
    HttpURLConnection con = (HttpURLConnection)new URL(url).openConnection();
    BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
    或者不要用流。。可以参考下采集怎么写的,认识一朋友有写这东西,但不给我核心代码,ORZ、、
      

  3.   


    jdom 也可以读取字节流的
      

  4.   

    你既然都能够得到xml了,就可以通过解析xml可以实现啊,你说的你得到的是流,你直接把你得到的流传进去就可以!
      

  5.   

    推荐你去看看 关于 XSL 方面的东西以前我做爬虫 取道了流生成的xml文件,就是通过他来过量得到想要的内容