반응형
============= common.jsp =============================

<%@ page contentType="text/html;charset=EUC-KR" %>
<% request.setCharacterEncoding("euc-kr"); %>
<%@ page import="java.util.*" %>
<%@ page import="java.net.*" %>
<%@ page import="javax.xml.parsers.*" %>
<%@ page import="org.w3c.dom.*" %>


<%!

 final String G_ROOT_URL="http://locahost:6973/test.cgi?";

 final String strVal(String str){
  if(str == null) str = "";
  return str.trim();
 }

 class T_DOC{
  String id;
  String sim;
  HashMap<String,String> hm_item=new HashMap<String,String>();
 }


 class SrchInfo{


  StringBuffer m_URL=new StringBuffer();
 
  SrchInfo(){
   m_URL.append(G_ROOT_URL);
  }
 
  public void SetQRY(String p_name,String p_value){
   m_URL.append(p_name + "=" + p_value + "&");
  }

  //  헤더 정보 변수
  String m_section_name;
  String m_usrspec;
  String m_idxname;
  String m_qryflag;
  String m_srtflag;
  String m_totcnt;
  String m_maxcnt;
  String m_outcnt;
  String m_pagenum;
 
  // 결과 정보
  ArrayList<T_DOC> m_DOCS=new ArrayList<T_DOC>();


  private DocumentBuilderFactory docBuilderFactory;

  private DocumentBuilder docBuilder;

  private Document doc;
  private NodeList nodeDOC;
 
  public void GetData(){

   try{
   
 // DocumentBuilderFactory 의 객체 생성
 DocumentBuilderFactory docBuilderFactory=DocumentBuilderFactory.newInstance();
 // factory로부터 DocumentBuilder 를 얻어온다.
 DocumentBuilder docBuilder=docBuilderFactory.newDocumentBuilder();

   // XML 문서로부터 DOM 객체를 만들어서 문서(Document) 로 반환 받는다.
   //System.out.println(p_xmlfile);
   
   Document doc=docBuilder.parse(m_URL.toString());
   
   //메타 정보 추출
   nodeDOC=doc.getElementsByTagName("section");
   
  m_section_name=nodeDOC.item(0).getAttributes().getNamedItem("name").getNodeValue();
 
  m_usrspec=nodeDOC.item(0).getChildNodes().item(1).getFirstChild().getNodeValue();
  m_idxname=nodeDOC.item(0).getChildNodes().item(3).getFirstChild().getNodeValue();
  m_qryflag=nodeDOC.item(0).getChildNodes().item(5).getFirstChild().getNodeValue();
  m_srtflag=nodeDOC.item(0).getChildNodes().item(7).getFirstChild().getNodeValue();
  m_totcnt=nodeDOC.item(0).getChildNodes().item(9).getFirstChild().getNodeValue();
  m_maxcnt=nodeDOC.item(0).getChildNodes().item(11).getFirstChild().getNodeValue();
  m_outcnt=nodeDOC.item(0).getChildNodes().item(13).getFirstChild().getNodeValue();
m_pagenum=nodeDOC.item(0).getChildNodes().item(15).getFirstChild().getNodeValue();
   
   
   int count=Integer.parseInt(m_outcnt);
   
   for ( int i=0 , idx=19; i < count ; i++ , idx+=2 ){
   
    T_DOC tmp_doc=new T_DOC();
   
tmp_doc.id=nodeDOC.item(0).getChildNodes().item(idx).getAttributes().getNamedItem("id").getNodeValue();
tmp_doc.sim=nodeDOC.item(0).getChildNodes().item(idx).getAttributes().getNamedItem("sim").getNodeValue();
 
    int child_cnt=nodeDOC.item(0).getChildNodes().item(idx).getChildNodes().getLength();
     
    for ( int j = 1 ; j < child_cnt ; j+=2 ) {
     
 String tag=nodeDOC.item(0).getChildNodes().item(idx).getChildNodes().item(j).getAttributes().getNamedItem("name").getNodeValue();
 String value=nodeDOC.item(0).getChildNodes().item(idx).getChildNodes().item(j).getFirstChild().getNodeValue();
     tmp_doc.hm_item.put(tag,value);
    }
   
    m_DOCS.add(tmp_doc);
   }
   
    }catch(java.lang.Exception e) {

               System.err.println("==GetData()]"+ e.toString());
               e.printStackTrace(System.out);
              // System.exit(-1);
       }
  }// end of  GetHeader
 
  public void GetResults(){

  }

}//end of class

%>


==================== index.jsp ===========================================

실제 사용 샘플 페이지
 
<%--   xml parse fs 2008 07 --%>
<%@ page contentType="text/html;charset=EUC-KR" %>
<% request.setCharacterEncoding("euc-kr"); %>
<%@ include file="common.jsp" %>

<%
 SrchInfo OB_SrchInfo=new SrchInfo();

 OB_SrchInfo.SetQRY("w","test");

 String qry=strVal(request.getParameter("qry"));
 
 if( qry.length() == 0 ) qry="*";


 OB_SrchInfo.SetQRY("q",URLEncoder.encode(qry));

 //  xml 파서 시작
 OB_SrchInfo.GetData();

 out.println("<xmp> "  + OB_SrchInfo.m_URL + "</xmp>" );

%>

 <HEAD>

 <TITLE>XML JAVA 파서 샘플 페이지</TITLE>

 </HEAD>

 <BODY>
 <P>
 <table>
 <form name=form action=index.jsp method=get>
  검색어:<input type=text name=qry value=<%= qry %>>
  <input type=submit value="검색">
 </form>

 </table>
 <검색 결과 헤더 정보> : <br>
  &nbsp;&nbsp;- 전체건수: <%= OB_SrchInfo.m_totcnt %> <br>
  &nbsp;&nbsp;- 요청건수(outmax값): <%= OB_SrchInfo.m_maxcnt %> <br>
  &nbsp;&nbsp;- 출력건수: <%= OB_SrchInfo.m_outcnt %> <br>
  &nbsp;&nbsp;- 출력페이지번호: <%= OB_SrchInfo.m_pagenum %> <br>

 <p>
 <검색 결과 데이터> :
 <p>

<%
 
 for(int i=0; i < OB_SrchInfo.m_DOCS.size() ; i++){
 
  T_DOC RESULT=OB_SrchInfo.m_DOCS.get(i);
 
  out.println( "DOC ID : " +  RESULT.id  + "<br>");
  out.println( "DOC SIM : " + RESULT.sim + "<br>");
  out.println( "제목 : " + RESULT.hm_item.get("TITLE=") + "<br>");
  out.println( "내용 : " + RESULT.hm_item.get("ARTICLE=") + "<p>");

 }
%>


실제 활용예 소스는 아니지만 좀 아는 사람이라면
실무에 패키지해서 유용하게 사용할수도 있을것이다~~
2008 07 fs

Posted by 1010