XML 및 jdom 구문 분석

8365 단어 xmlmysqlbeanjdbcXSL
확장 가능한 태그 언어(eXtensible Markup Language) 1, 3개 개념 XMl 확장 가능한 태그 언어 XSL 표현 형식 DTD 제약 XML 파일 중 무엇입니까산지의 속성 XML: <지우개 진흙 색깔 = "흰색"<산지> 동해오래국 XSL: 장식 파일(같은 데이터가 다른 장식) 첫 번째 빚기 - 고양이 두 번째 빚기 - 강아지 현재 DTD는 적게 사용하고 있습니다.현재 많이 사용되고 있는 것은 Schema입니다. 현재 표준은 주로 W3C에서 제정되고 있습니다.
3. WHY XML?html 단점: 라벨을 확장할 수 없고 데이터와 디스플레이 스타일이 분리되지 않습니다.
4. XML이 가장 많이 사용하는 것은 A, 프로필 B, 데이터 교환(이질 정보 교환) C, 파충류 등 네트워크 기술에 유리하다
5. 명명 공간 아래 예에서policeman 007name의 명명 공간은 생략된 방식을 사용했고 혈도 노조name는 X로 시작하는 명명 공간을 사용했다.
“xmlns:X="http://www.police.net/criminal.dtd "”그래서 두 개의name가 구분되었다.
- http://www.police.net/policeman.dtd "
xmlns:X="http://www.police.net/criminal.dtd ">007 - 혈도 원조

6. 처리 지시
7. 디자인 원칙 아래 속성은 요소로 설계할 수 있다. 만약에 속성이 서브구조를 포함한다면 이 숙성 발생 횟수가 여러 번 발생하는 것이 비교적 중요하고 DTD는 제한이 필요하다.
8. jdom,dom4j,ax 해석
다음은 jdom로 해석하겠습니다. 비교적 간단하기 때문입니다.
 
9. 구체적인 예
1、gobal-configure.xml
<?xml version="1.0" encoding="UTF-8"?>

<sys-configure>
	<jdbc-info>
		<driver-class-name>com.mysql.jdbc.Driver</driver-class-name>
	    <url>jdbc:mysql://10.60.40.201:3306/futures3</url>	
		<user-name>root</user-name>	
		<password>symbio</password>	
		<beans>	
			<bean id="categoryBourse" class="com.symbio.hz.dataload.CategoryBourse"></bean>
			<bean id="categoryTradeMonth" class="com.symbio.hz.dataload.CategoryTradeMonth"></bean>
		</beans>>
	</jdbc-info>
</sys-configure>

  
 2、DBManager
package com.hz.data;
public class CategoryBourse {
}
 
public class DBManager {
 private String dbDriver_;
 private String dbUrl_;
 private String dbLogin_;
 private String dbPassword_;
 public String getDbUrl_() {
  return dbUrl_;
 }
 public void setDbUrl_(String dbUrl_) {
  this.dbUrl_ = dbUrl_;
 }
 public String getDbLogin_() {
  return dbLogin_;
 }
 public void setDbLogin_(String dbLogin_) {
  this.dbLogin_ = dbLogin_;
 }
 public String getDbPassword_() {
  return dbPassword_;
 }
 public void setDbPassword_(String dbPassword_) {
  this.dbPassword_ = dbPassword_;
 }
 public void setDbDriver_(String dbDriver_) {
  this.dbDriver_ = dbDriver_;
 }
}

 
 
 3、Globleconfigue.java
package hz.data;

import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;

/**
 *   xml       
 * 
 */
public class Globleconfigue {
	//         xml  。
	private static final String CONFIG_FILE_NAME="gobal-configure.xml";
	//     
	private Element rootElt;
	//        DBManager
	private DBManager dbManager= new DBManager();
	public DBManager getDbManager() {
		return dbManager;
	}
	//      initBeans();      bean
	private Map beanMap= new HashMap();
	
	//        。
	private static Globleconfigue instance = new Globleconfigue();

	private Globleconfigue(){
		//     SAXBuilder  ,    dom     。
		SAXBuilder sb=new SAXBuilder();
		try {
		// sb.build(in)    SAXBuilder   sb       in  Document  。
		Document doc = sb.build(Thread.currentThread().getContextClassLoader().getResourceAsStream(CONFIG_FILE_NAME));
		//  Document          。
		this.rootElt=doc.getRootElement();
		//     rootElt.getChildren();          ,             ,  xpath。
		//  initJdbcInfo()  
		initJdbcInfo();
		//  initBeans()  
		initBeans();
		
		} catch (JDOMException e) {
			// TODO 
			e.printStackTrace();
		} catch (IOException e) {
			// TODO 
			e.printStackTrace();
		}
	}

	public static Globleconfigue getInstance() {
		return instance;
	}
	
	/*
	 *           
	 */
	private void initJdbcInfo(){
		try {
			//    Elenment  
			Element driveClassNameElt = (Element) XPath.selectSingleNode(rootElt, "//sys-configure/jdbc-info/driver-class-name");
			//System.out.println(driveClassNameElt.getText());
			//    DbDriver_     
			dbManager.setDbDriver_(driveClassNameElt.getText());
			
			Element urlElt = (Element) XPath.selectSingleNode(rootElt, "//sys-configure/jdbc-info/url");
			dbManager.setDbUrl_(urlElt.getText());
			
			Element userNameElt = (Element) XPath.selectSingleNode(rootElt, "//sys-configure/jdbc-info/user-name");
			dbManager.setDbLogin_(userNameElt.getText());
			
			Element passwordElt = (Element) XPath.selectSingleNode(rootElt, "//sys-configure/jdbc-info/password");
			dbManager.setDbPassword_(passwordElt.getText());//      DBManager     。
			
			System.out.println("dbManager   :  "+dbManager.getDbDriver_()+"   ======  "+"dbManager url:  "+dbManager.getDbUrl_());
			
		} catch (JDOMException e) {
			// TODO 
			e.printStackTrace();
		}
	}
	
	
	/*
	 *   bean        
	 */
	private void initBeans(){
		try {
			//    List  (List       Element  ),       XPath.selectNodes
			List beanList =  XPath.selectNodes(rootElt,"//sys-configure/beans/bean");
			for(Iterator iter=beanList.iterator(); iter.hasNext();){
				Element beanElt=(Element)iter.next();
				//   id  xml    ID
				String id=beanElt.getAttributeValue("id");
				String className=beanElt.getAttributeValue("class");
				System.out.println("id="+id);
				System.out.println("name="+className);
				//     bean     ,   map 。
				Object obj=Class.forName(className).newInstance();//         
				beanMap.put(id, obj);
			}
			
		} catch (JDOMException e) {
			// TODO 
			e.printStackTrace();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public Object getBean(String c){
	return	beanMap.get(c);
	}
	

	public static void main(String[] args){
		Globleconfigue.getInstance();
		CategoryBourse categoryBourse=(CategoryBourse)Globleconfigue.getInstance().getBean("categoryBourse");
		
	}
	

}

  4、CategoryBourse.java
공허하다
 
 
5, jdom 쓰기
package hz.data;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

/*
 * <selects>
 *   <select>
 *     <id>1</id>
 *     <name>  </name>
 *   </select>
 *   <select>
 *     <id>2</id>
 *     <name>  </name>
 *   </select>	  
 * </selects>
 */
public class XMLWrite {
	public static void main(String[] args){
	Element rootElt=new Element("selects");
	Element selectElt=new Element("select");
	Element idElt=new Element("id");
	idElt.addContent("1");
	
	Element valueElt=new Element("name");
	valueElt.addContent("  ");
	
	selectElt.addContent(idElt);
	selectElt.addContent(valueElt);
	rootElt.addContent(selectElt);
	//            
	//     
	Document doc=new Document(rootElt);//   rootElt Document             
	XMLOutputter out=new XMLOutputter();//jdom        ,out             
	//            GBk,  GB2312
	out.setFormat(Format.getCompactFormat().setEncoding("GB2312"));
	//        ,      
	String xmlStr=out.outputString(doc);
	//     
	System.out.print(xmlStr);
	//      
	try {
		out.output(doc, new FileOutputStream("c://test.xml"));
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}
	
	}	
}

위에서 쓴 것이 맞는지 검증하는 가장 간단한 방법은 i 브라우저로 생성된 xml 파일을 여는 것입니다.

좋은 웹페이지 즐겨찾기