[JSP] XML, Parser, Framework

*XML( eXtensible Markup Language)

 -프로그램의 환경설정용사용, 이종언어간 데이터 전달용.

 

이종언어:

C언어와  java언어간에 데이터전달

Java JavaScript언어간 데이터전달

Java PyThon언어간의 데이터 전달

 

 - HTML과 다르게 태그가 정해져 있지 않다.( 개발자가 상황에 맞게 태그를 정의해서 사용)

 - SGML에서 생성되었고, node( 태그 )를 사용자가 마음대로 선언할 수 있는 마크업 언어.

 - 연산의 기능이 없다.

 - 작성규칙을 지키지 않으면 error가 발생.
 - XML, DTD, XSLT( XSL )
구성될 수 있다.

 

Well-formed 문서(적격문서) : XML하나만 존재하며, 작성규칙만 준수하여 제작하는 XML

Valid문서(유효문서 ) : XMLDTD가 함께 존재하며, DTD를 준수하여 제작하는 XML

 

*XML작성규칙

 - .소문자를 구분한다.

 - 시작노드와노드는 반드시 짝으로 나와야한다. ( <시작></> )

 - 최상위 부모노드( root node, 근노드)는 반드시 하나만 존재.

 - 속성은 공백으로 구분이되어야 한다.

 - 선언부는 공백 없이 첫줄에서만 작성되어야한다.

*문서형식)

 <?xml version=“1.0” encoding=“UTF-8” standalone=“DTD사용여부” ?>

<최상위부모노드>

  <자식노드들……/>

</최상위부모노드>

*주석

<!--

  한줄 주석 또는 여러줄 주석

-->

 

DB Table 예시

<?xml version=“1.0” encoding=“UTF-8”?>

<depts>

 <dept>

   <deptno>10</deptno>

   <dname>ACCOUNTING</dname>

   <loc>NEW YORK</loc>

 </dept>

 <dept>

   <deptno>20</deptno>

   <dname>개발부</dname>

   <loc>서울</loc>

 </dept>

    .

    .

</depts>

 

*XML Parser

 - XML 문서를 자르거나, 생성하는 일을 할 수 있는 도구.

 - SAX( Simple API XML)방식, DOM(Document Object Model)방식 Parser존재

*JDOM Parser

 -DOM방식과 SAX방식을 혼합한 Parser

 -jdom.org에서 다운.

 

*Parser를 사용한 XML생성

 

1.XML 문서객체 생성

  Document doc=new Document();

2. 최상위 부모노드 생성

 Element rootNode=new Element(“노드명”);

 Element rootNode=new Element(“root”);

3.자식 노드 생성

Element msgNode=new Element(“msg”);

  노드의 값 설정

  msgNode.setText(“안녕”);

4.배치

  노드명.addContent( 배치할노드명)

  rootNode.addContent( msgNode );

  *XML문서객체에 최상위 부모노드 배치

   doc.addContent( rootNode  );

5.생성된 XML을 출력.

  XMLOutputter xout=new XMLOutputter( Format.getPrettyFormat() );

 xout.output( 문서객체, 출력스트림);

 

Console 출력 : System.out

File  출력 : FileOutputStream

Web browser출력 : out ( JSPWriter 내장객체 )

 

*JDOM Parser를 사용한 XML Parsing

 -XML node를 찾고, node 사이에 값을 얻는 것.

  

   <name>이장훈</name>

사용법)

1.Builder 생성 – XML을 읽어 들여 객체로 생성하는 클래스

 SAXBuilder builder=new SAXBuilder();

2.XML과 연결하여 XML문서객체(Document)를 받는다.

     Document doc=builder.build( );

Local =>builder.build( new File(“절대경로”)); // Local에 존재하는 XML얻기

            -프로그램의 환경설정을 XML에서 수행하고 읽어들이기위해서

Web =>builder.build(new java.net.URL(“URL”)); //Web server에 존재하는 XML얻기

            -데이터를 얻기 위해서 사용

3.최상위 부모노드 얻기  

    Element rootNode=doc.getRootElement();

4. 자식노드 얻기.

  자식이 하나인 경우

   Element subNode=rootNode.getChild(“노드명”);

  자식이 여러 개인 경우

  List<Element> subNodes=rootNode.getChildren(“노드명”);

5. 노드의 값 얻기

     node.getText();

 *자식노드가 여러 개인 경우

  List<Element> list=rootNode.getChildren(“노드명”);

  for( Element deptNode : list){

   자식노드를 받는다.

 Element deptnoNode=deptNode.getChild(“deptno”);

 Element dnameNode=deptNode.getChild(“dname”);

 Element locNode=deptNode.getChild(“loc”);

   //parsing

    node.getText();

  }

 

*이름 데이터를 보내기

XML

<?xml version=“1.0” encoding=“UTF-8”?>

<root>

 <name>이름</name>

</root>

 

*jQuery XML Parsing

 - jQueryObjectfind 함수로 노드를 찾고, parsing 수행한다.

*Framework

 - 자주 사용될 기능들을 미리 구현해 놓은 것.( 생산성 향상 )

 - 배포는 .jar 수행

 - 제공되는 기능을 개발자가 상황에 맞게 수정하여 사용한다.

 - 생명주기를 개발자가 관리하지 않는다. ( new 최소한다. )

 - 반조립 형태.

 - 최소한의 품질 보장을 받기 위해서 프레임워크를 도입.

 - Spring, MyBatis, Struts, any framework, Lafj, DF Framework,,,,

 

*Library

 - 자주 사용될 기능들을 미리 구현해 놓은 것.( 생산성 향상 )

 - 배포는 .jar 수행

 - 제공되는 기능을 그대로 사용한다.

 - 생명주기를 개발자가 관리를 한다. ( new를 개발자가 한다. )