解析xml文件

日誌 > 個人日記
設置置頂 | 編輯 | 刪除

解析xml文件

發表於:2008年2月26日 14時24分21秒閱讀(2)評論(0)特效:[圖]本文鏈接:http://user.qzone.qq.com/592433424/blog/1204007061
package com.shzscq.searchpatent.util;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StringReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
/**
* 提取解析xml後的結果值,外部可以直接使用解析後的結果<br>
* Create Date: 2008-2-22 <br>
* @version  1.0 22 2 2008
*
*/
public class XmlReasult {
private String sTotalHit = "";// 命中的總數
private HashMap<String, String> mapEryDBHit = new HashMap<String, String>();
private String sTime = "";// 檢索所用的時間
private String sHtmlContent = "";// 轉化完的html代碼內容
private BufferedReader in = null;// 存儲xml文件內容的數據流
private String sXmlContent = "";// 存儲xml文件內容信息
/**
  * 以下對initial方法中所使用的變量進行舉例說明:<br>
  * @param sServer:http://192.168.0.238/search1.dhtml <br>
  * @param sXslFileName:xmlresult.xsl <br>
  * @param sInputQuery:sQuery=computer&sDbs=de,us&iPage=1&iPageSize=20&sFieldList=PN,TI,PA,AU<br>
  * @throws Exception
  */
public void initial(String sServer, String sXslFileName,
   String sInputQuery)throws Exception
{
  URL url = new URL(sServer);
  URLConnection connection = url.openConnection();
  connection.setDoOutput(true);
  PrintWriter out = new PrintWriter(connection.getOutputStream());
  out.print(sInputQuery);
  out.close();
  this.in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
  String sLine = "";
  while ((sLine = in.readLine()) != null)
  {
   this.sXmlContent = this.sXmlContent + sLine + "/n";
  }
  // SAX解析XML流 begin
  ParseXML parseXml = new ParseXML();
  try
  {
   parseXml.parse(sXmlContent);
   sTotalHit = parseXml.getSTotalHit();// 命中總數
   sTime = parseXml.getSTime();// 檢索耗時
   // 各個數據庫中命中的結果信息存儲到一個mapEryDBHit中
   mapEryDBHit = (HashMap<String, String>)
   parseXml.getMapEryDBHit();
  }
  catch (Exception e)
  {
   e.printStackTrace();
  }
  //
  // SAX解析XML流後,使用xsl樣式表吧把xml文件轉化成html代碼
  this.sHtmlContent = XmlToHtml(sXslFileName, this.sXmlContent);
}
public String XmlToHtml(String sXslFileName, String sXmlContent)
throws Exception
{
  String sHtmlCont = "";// 用於存儲臨時html代碼
  String sTemp = "";// 臨時變量,用於存取文件中每行的文本文字
  String sFileContent = "";
  FileInputStream fis = new FileInputStream(sXslFileName);
  InputStreamReader isr = new InputStreamReader(fis);
  BufferedReader buf = new BufferedReader(isr);
  while ((sTemp = buf.readLine()) != null)
  {
   // 讀取文件內容的每一行合成一個String字符串
   sFileContent = sFileContent + sTemp;
  }
  // xsl內容字符串轉變爲字符流
  StringReader bosXslSou = new StringReader(sFileContent);
  // xml內容字符串轉變爲字符流
  StringReader bosXmlSou = new StringReader(sXmlContent);
  try
  {
   TransformerFactory tFactory = TransformerFactory.newInstance();
   // 獲取xsl的字符流
   Transformer transformer = tFactory.newTransformer
   (new javax.xml.transform.stream.StreamSource(bosXslSou));
   ByteArrayOutputStream bosRes = new ByteArrayOutputStream();
   transformer.transform(new javax.xml.transform.stream.StreamSource(bosXmlSou),
     new javax.xml.transform.stream.StreamResult(bosRes));
   sHtmlCont = new String(bosRes.toString());
  }
  catch (Exception e)
  {
   e.printStackTrace();
  }
  return sHtmlCont.toString();//返回html代碼內容
}
public HashMap<String, String> getMapEryDBHit()
{
  return mapEryDBHit;
}
public String getSTotalHit()
{
  return sTotalHit;
}
public String getSTime()
{
  return sTime;
}
public String getSResult()
{
  return sHtmlContent;
}
}
 
評論列表
請選擇道具
<textarea class="content" id="commentEditor" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; COLOR: gray! important; BORDER-BOTTOM: #ccc 1px solid" onfocus="getUBBeditor(this)" rows="13" cols="50" name="content">點擊這裏發表評論</textarea>
溫馨提示:點擊驗證碼輸入框,以獲取驗證碼
請輸入驗證碼:
     
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章