通过下面的yahoo api搜索,得到的xml,如何一行一行输出出来:public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException 
{
    //定义Yahoo的搜索Web Service的访问URL的基本部分
    String baseUrl = "http://api.search.yahoo.com/WebSearchService/V1/webSearch?appid=YahooDemo&ei=gb2312&type=all";
    //获得客户的查询关键字
    String query = request.getParameter("query");
    //对query进编码转换
    query = new String(query.getBytes("ISO8859-1"),"gb2312");
    //对query进URL编码
    query = URLEncoder.encode(query,"gb2312");
    //构造出查询关键字参数
    query = "&query="+query;
    //获得客户的记录数
    String results = request.getParameter("results");
    //构造出记录数参数
    results = "&results="+results;    
    //构造出完整的URL
    String url = baseUrl+query+results;
    //建立一个HttpURLConnection对象进行搜索
    HttpURLConnection con = (HttpURLConnection)new URL(url).openConnection();
    //设置HttpURLConnection对象的访问方法
    con.setRequestMethod("GET");
        
    //将查询的结果以XML文档返回给客户端
    response.setContentType("text/xml");
    response.setCharacterEncoding("UTF-8");
    PrintWriter out = response.getWriter();
    //建立一个BufferedReader对象读取查询结果
    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();
}在 out.println(line); 中输出的是一个 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.   

    ....xml解析伐。。找找吧。。很多的
      

  2.   


    对,我用
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance ( ) ;
          
       try {
             DocumentBuilder db = dbf.newDocumentBuilder ( ) ;可..
      

  3.   

    dom4j去google下 例子很多!
      

  4.   

    SAXBuildJDOM也行例子还是蛮多的
      

  5.   


    import java.io.File;
    import java.util.List;import org.dom4j.Document;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;public class Test3 {
    public static void main(String[] args) {
    SAXReader reader = new SAXReader();
    Document document;
    File file = new File("d:/result.xml");
    try {
    document = reader.read(file);
    Element root = document.getRootElement();
    List<Element> list = root.elements("Result");
    for (int i = 0; i < list.size(); i++) {
    Element result = list.get(i);
    List<Element> property = result.elements();
    for (int j = 0; j < property.size(); j++) {
    Element e = property.get(j);
    String content = result.elementText(e.getQName().getName());
    System.out.println(e.getQName().getName() + ":"
    + content
    + "\t");
    }
    System.out.println("-------------------------------------------");
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
      

  6.   

    java读取xml的四种方法: xml文件 
    <?xml version="1.0" encoding="GB2312"?> 
    <RESULT> 
    <VALUE> 
         
      <NO>A1234 </NO> 
         
      <ADDR>四川省XX县XX镇XX路X段XX号 </ADDR> 
    </VALUE> 
    <VALUE> 
         
      <NO>B1234 </NO> 
          
      <ADDR>四川省XX市XX乡XX村XX组 </ADDR> 
    </VALUE> 
    </RESULT> 
    第一种 DOM 实现方法 
    import java.io.File; 
    import javax.xml.parsers.DocumentBuilder; 
    import javax.xml.parsers.DocumentBuilderFactory; 
    import org.w3c.dom.Document; 
    import org.w3c.dom.NodeList; 
    public class MyXMLReader2DOM { 
    public static void main(String arge[]) { 
      long lasting = System.currentTimeMillis();   try { 
      File f = new File("data_10k.xml"); 
      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder builder = factory.newDocumentBuilder(); 
      Document doc = builder.parse(f); 
      NodeList nl = doc.getElementsByTagName("VALUE"); 
      for (int i = 0; i < nl.getLength(); i++) { 
        System.out.print("车牌号码:"+ doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue()); 
        System.out.println("车主地址:"+ doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue()); 
      } 
      } catch (Exception e) { 
      e.printStackTrace(); 
      } 


    第二种,DOM4J实现方法 
    import java.io.*; 
    import java.util.*; 
    import org.dom4j.*; 
    import org.dom4j.io.*; 
    public class MyXMLReader2DOM4J { 
    public static void main(String arge[]) { 
      long lasting = System.currentTimeMillis(); 
      try { 
      File f = new File("data_10k.xml"); 
      SAXReader reader = new SAXReader(); 
      Document doc = reader.read(f); 
      Element root = doc.getRootElement(); 
      Element foo; 
      for (Iterator i = root.elementIterator("VALUE"); i.hasNext();) { 
        foo = (Element) i.next(); 
        System.out.print("车牌号码:" + foo.elementText("NO")); 
        System.out.println("车主地址:" + foo.elementText("ADDR")); 
      } 
      } catch (Exception e) { 
      e.printStackTrace(); 
      } 


    第三种 JDOM实现方法 
    import java.io.*; 
    import java.util.*; 
    import org.jdom.*; 
    import org.jdom.input.*; 
    public class MyXMLReader2JDOM { 
    public static void main(String arge[]) { 
      long lasting = System.currentTimeMillis(); 
      try { 
      SAXBuilder builder = new SAXBuilder(); 
      Document doc = builder.build(new File("data_10k.xml")); 
      Element foo = doc.getRootElement(); 
      List allChildren = foo.getChildren(); 
      for (int i = 0; i < allChildren.size(); i++) { 
        System.out.print("车牌号码:"+ ((Element) allChildren.get(i)).getChild("NO").getText()); 
        System.out.println("车主地址:"+ ((Element) allChildren.get(i)).getChild("ADDR").getText()); 
      } 
      } catch (Exception e) { 
      e.printStackTrace(); 
      } 


    第四种SAX实现方法 
    import javax.xml.parsers.SAXParser; 
    import javax.xml.parsers.SAXParserFactory; 
    import org.xml.sax.Attributes; 
    import org.xml.sax.InputSource; 
    import org.xml.sax.SAXException; 
    import org.xml.sax.helpers.DefaultHandler; 
    public class MyXMLReader2SAX extends DefaultHandler { 
    java.util.Stack tags = new java.util.Stack(); 
    public MyXMLReader2SAX() { 
      super(); 

    public static void main(String args[]) { 
      long lasting = System.currentTimeMillis(); 
      try { 
      SAXParserFactory sf = SAXParserFactory.newInstance(); 
      SAXParser sp = sf.newSAXParser(); 
      MyXMLReader2SAX reader = new MyXMLReader2SAX(); 
      sp.parse(new InputSource("data_10k.xml"), reader); 
      } catch (Exception e) { 
      e.printStackTrace(); 
      } 
      System.out.println("运行时间:" + (System.currentTimeMillis() - lasting) 
        + "毫秒"); 

    public void characters(char ch[], int start, int length) 
      throws SAXException { 
      String tag = (String) tags.peek(); 
      if (tag.equals("NO")) { 
      System.out.print("车牌号码:" + new String(ch, start, length)); 
      } 
      if (tag.equals("ADDR")) { 
      System.out.println("地址:" + new String(ch, start, length)); 
      } 

    public void startElement(String uri, String localName, String qName, 
      Attributes attrs) { 
      tags.push(qName); 

    }
      

  7.   

    谢谢:valen_jia,javagxc 可还有不行.我 在 out.println(line); 中输出的是一个 xml 文件流...
      

  8.   

    这个好像可以:
    第四种SAX实现方法
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
    import org.xml.sax.Attributes;
    import org.xml.sax.InputSource;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;
    public class MyXMLReader2SAX extends DefaultHandler {
    java.util.Stack tags = new java.util.Stack();
    public MyXMLReader2SAX() {
      super();
    }
    public static void main(String args[]) {
      long lasting = System.currentTimeMillis();
      try {
      SAXParserFactory sf = SAXParserFactory.newInstance();
      SAXParser sp = sf.newSAXParser();
      MyXMLReader2SAX reader = new MyXMLReader2SAX();
      sp.parse(new InputSource("data_10k.xml"), reader);
      } catch (Exception e) {
      e.printStackTrace();
      }
      System.out.println("运行时间:" + (System.currentTimeMillis() - lasting)
        + "毫秒");
    }
    public void characters(char ch[], int start, int length)
      throws SAXException {
      String tag = (String) tags.peek();
      if (tag.equals("NO")) {
      System.out.print("车牌号码:" + new String(ch, start, length));
      }
      if (tag.equals("ADDR")) {
      System.out.println("地址:" + new String(ch, start, length));
      }
    }
    public void startElement(String uri, String localName, String qName,
      Attributes attrs) {
      tags.push(qName);
    }
    }
      

  9.   

    楼主既然已经得到了xml的文件流,那么在把文件流包装为file进行解析就可以了吧
    因java解析xml方法:DOM解析、SAX解析、JDOM解析、DOM4J解析
    这四种xml解析都是真针对xml文件对象
      

  10.   


    就是不在返回的时候立刻解析,先生成xml文件,然后再去读这个文件?这样不错!