XMLBean XSD JAVABEAN
2. xml 데이터 와 문서 에 schema 가 있다 면 XML bean 은 XML 데이터 와 문서 의 자바 류'보기'(즉,이 XML 데이터 와 문 서 를 방문 하 는 자바 코드)를 생 성 합 니 다.
3. 개발 자 는 이러한 자바 코드 를 사용 하여 xml 데이터 와 문 서 를 쉽게 읽 거나 쓸 수 있 으 며 xml schema 에 규정된 제약 사항 을 강제 적 으로 실행 할 수 있 습 니 다.
4. 자바 류'보기'는 원본 xml 데이터 와 문서 의 내용 을 충 실 히 표현 할 수 있 습 니 다.자바 류'보기'는 모두 보 호 받 고 가장 기본 적 인 xml 표현 을 바탕 으로 하기 때 문 입 니 다.
따라서 XML bean s 를 사용 하여 xml 데이터 와 문 서 를 방문 하 는 장점 은 분명 합 니 다.
1. 데이터 와 문 서 를 대상 으로 바라 보고 처리 하 는 관점 을 완전히 사용 합 니 다.
2. 개발 자 는 더 이상 XML 데이터 와 문서 에 접근 하기 위해 대량의 코드 를 작성 할 필요 가 없습니다.
3. schema 에 규정된 데이터 에 대한 제약 조건 을 사용 할 수 있 으 며,이러한 제약 을 실현 하 는 코드 를 스스로 작성 할 필요 가 없습니다.
4. 모든 xml 데이터 와 문 서 를 분석 할 필요 가 없습니다.단지 그 중의 특정한 데이터 항목 에 접근 하기 위해 서 입 니 다.
XMLbean 은 Schema 를 바탕 으로 xml 에 접근 하 는 해결 방법 으로 xml 데이터 와 문 서 를 방문 하고 처리 할 때 xml 의 내용 을 완전히 방문 할 수 있 을 뿐만 아니 라 xml 의 schema 정 보 를 잃 어 버 리 지 않 는 강력 한 기능 을 제공 합 니 다.XMLbean s 를 사용 하면 대상 을 대상 으로 하 는 관점 으로 xml 데이터 와 문 서 를 처리 할 수 있 고 이 xml 데이터 에 대응 하 는 xml 구조 와 schema 에 충실 할 수 있 습 니 다.
XML 해석
XML 은 자바 응용 프로그램 에서 점점 중요 해 지고 데이터 저장 과 교환 에 광범 위 하 게 응용 된다.예 를 들 어 우리 가 흔히 볼 수 있 는 프로필 은 모두 XML 방식 으로 저장 된다.XML 은 자바 Message Service 와 웹 서비스 등 기술 을 데이터 교환 으로 도 응용 한다.
따라서 XML 문 서 를 정확하게 읽 고 쓰 는 것 은 XML 응용의 기초 이다.
자바 는 XML 을 해석 하 는 데 SAX 와 DOM 두 가지 방식 을 제공 하지만 그래도 조금 복잡 한 XML 을 읽 고 쓰 는 것 은 쉬 운 일이 아니다.
2.XMLbean 소개
Hibernate 는 현재 유행 하 는 자바 환경 을 위 한 대상/관계 데이터베이스 매 핑 도구 가 되 었 습 니 다.
Hibernate 등 대상/관계 데이터베이스 매 핑 도구 가 나타 나 기 전에 데이터베이스 에 대한 조작 은 JDBC 를 통 해 이 루어 집 니 다.데이터베이스 에 대한 모든 조작 은 개발 자가 직접 SQL 문 구 를 써 서 이 루어 져 야 합 니 다.대상/관계 데이터베이스 매 핑 도구 가 나타 나 면 데이터 베 이 스 를 자바 빈 에 대한 조작 으로 전환 합 니 다.데이터베이스 개발 에 큰 편 의 를 주 었 습 니 다.따라서 XML 에 대한 읽 기와 쓰 기 를 자바 빈 으로 바 꾸 는 유사 한 도구 가 있다 면 XML 의 읽 기와 쓰 기 를 간소화 할 것 입 니 다.XML 에 익숙 하지 않 은 개발 자 들 도 XML 을 편리 하 게 읽 고 쓸 수 있 습 니 다.이 도구 가 바로 XML bean 입 니 다.
3.XMLbean 과 XML 문 서 를 준비 합 니 다.
XMLbean 은 아파 치 의 오픈 소스 프로젝트 입 니 다.http://www.apache.org다운로드,최신 버 전 은 2.0 입 니 다.압축 해제 후 디 렉 터 리 는 다음 과 같 습 니 다.
xmlbean2.0.0
+---bin
+---docs
+---lib
+---samples
+---schemas
또한 XML 문서(customers.xml)를 준비 해 야 합 니 다.본 논문 의 예 에서 우 리 는 이 문 서 를 읽 고 쓸 것 입 니 다.문서 의 원본 코드 는 다음 과 같 습 니 다.
<?xml version="1.0" encoding="UTF-8"?><Customers>
<customer>
<id>1</id>
<gender>female</gender>
<firstname>Jessica</firstname>
<lastname>Lim</lastname>
<phoneNumber>1234567</phoneNumber>
<address>
<primaryAddress>
<postalCode>350106</postalCode>
<addressLine1>#25-1</addressLine1>
<addressLine2>SHINSAYAMA 2-CHOME</
addressLine2>
</primaryAddress>
<billingAddress>
<receiver>Ms Danielle</receiver>
<postalCode>350107</postalCode>
<addressLine1>#167</addressLine1>
<addressLine2>NORTH TOWER HARBOUR CITY</addressLine2>
</billingAddress>
</address>
</customer>
<customer>
<id>2</id>
<gender>male</gender>
<firstname>David</firstname>
<lastname>Bill</lastname>
<phoneNumber>808182</phoneNumber>
<address>
<primaryAddress>
<postalCode>319087</postalCode>
<addressLine1>1033 WS St.</addressLine1>
<addressLine2>Tima Road</addressLine2>
</primaryAddress>
<billingAddress>
<receiver>Mr William</receiver>
<postalCode>672993</postalCode>
<addressLine1>1033 WS St.</addressLine1>
<addressLine2>Tima Road</addressLine2>
</billingAddress>
</address>
</customer></Customers>
이것 은 고객 의 데이터 모델 입 니 다.모든 고객 은 고객 번호(ID),이름,성별(gender),전화번호(phoneNumber)와 주소 가 있 습 니 다.그 중에서 주 소 는 두 가지 가 있 습 니 다.첫 번 째 주소(Primary Address)와 계산서 주소(BillingAddress),각 주 소 는 우편 번호,주소 1,주소 2 로 구성 되 어 있 습 니 다.그 중에서 계산서 주 소 는 수신 자(receiver)도 있 습 니 다.
또한 설정 파일(파일 이름 customer.xsdconfig)을 준비 해 야 합 니 다.이 파일 의 역할 은 다음 과 같 습 니 다.
<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config">
<xb:namespace>
<xb:package>sample.xmlbean</xb:package>
</xb:namespace></xb:config>
4.XMLbean 사용 절차
자바 환경 을 위 한 다른 대상/관계 데이터베이스 맵 도구 의 사용 절차 와 마찬가지 로 XMLbean 을 정식으로 사용 하기 전에 우 리 는 두 가지 준 비 를 해 야 합 니 다.
1.XML 스키 마 파일 생 성
XML Schema 파일 이 무엇 입 니까?정상 적 인 상황 에서 모든 XML 파일 에는 Schema 파일 이 있 습 니 다.XML Schema 파일 은 XML 의 제약 파일 로 XML 파일 의 구조 와 요소,그리고 요소 와 구조 에 대한 제약 을 정의 합 니 다.쉽게 말 하면 XML 파일 이 데이터베이스 에 기록 되 어 있다 면 Schema 는 표 구조 정의 입 니 다.
이 파일 이 왜 필요 합 니까?XMLbean 은 이 파일 을 통 해 XML 파일 의 구조 와 제약,예 를 들 어 데이터 형식 등 을 알 아야 합 니 다.이 Schema 파일 을 이용 하여 XMLbean 은 일련의 자바 Classes 를 만들어 XML 에 대한 조작 을 실현 할 것 입 니 다.개발 자로 서 XMLbean 에서 발생 하 는 자바 Classes 를 이용 하여 XML 에 대한 조작 을 완성 할 것 입 니 다.SAX 나 DOM 이 필요 하지 않 습 니 다.
어떻게 이 Schema 파일 을 만 듭 니까?XML 에 익숙 한 개발 자 에 게 는 스스로 이 Schema 파일 을 쓸 수 있 고 XML 에 익숙 하지 않 은 개발 자 에 게 는 도 구 를 통 해 완성 할 수 있 습 니 다.
비교적 유명한 예 를 들 어 XML SPY 와 Stylus Studio 는 XML 파일 을 통 해 Schema 파일 을 생 성 할 수 있 습 니 다.가입 하면 이 Schema 파일(customer.xsd)을 생 성 했 습 니 다.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="Customers">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="customer"
type="customerType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="customerType">
<xs:sequence>
<xs:element name="id" type="xs:int"/>
<xs:element name="gender" type="xs:string"/>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="phoneNumber" type="xs:string"/>
<xs:element name="address" type="addressType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="addressType">
<xs:sequence>
<xs:element name="primaryAddress" type="primaryAddressType"/>
<xs:element name="billingAddress" type="billingAddressType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="primaryAddressType">
<xs:sequence>
<xs:element name="postalCode" type="xs:string"/>
<xs:element name="addressLine1" type="xs:string"/>
<xs:element name="addressLine2" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="billingAddressType">
<xs:sequence>
<xs:element name="receiver" type="xs:string"/>
<xs:element name="postalCode" type="xs:string"/>
<xs:element name="addressLine1" type="xs:string"/>
<xs:element name="addressLine2" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
2.scomp 를 이용 하여 자바 클래스 생 성
scomp 는 XMLbean 이 제공 하 는 컴 파일 도구 입 니 다.bin 디 렉 터 리 에 있 습 니 다.이 도 구 를 통 해 위의 Schema 파일 을 자바 Classes 로 만 들 수 있 습 니 다.
scomp 의 문법 은 다음 과 같다.-
scomp [options] [dirs]* [schemaFile.xsd]* [service.wsdl]* [config.xsdconfig]*
주요 매개 변수 설명:
-src[dir]--생 성 된 자바 Classes 저장 디 렉 터 리
-srconly--자바 클래스 를 컴 파일 하지 않 고 Jar 파일 을 만 들 지 않 습 니 다.
-out[jarFileName]--생 성 된 Jar 파일,결 성 은 xmltypes.jar
-copiler-자바 컴 파일 러 의 경로,즉 자바 c 의 위치
schemaFile.xsd--XML Schema 파일 위치
config.xsdconfig--xsdconfig 파일 의 위치,이 파일 은 주로 생 성 된 자바 Class 를 만 드 는 데 사 용 됩 니 다.
패 키 지 는 sample.xmlbean 입 니 다.
본문 에서 나 는 이렇게 운행 한다.
scomp -src build\src -out build\customerXmlBean.jar schema\customer.xsd
-compiler C:\jdk142_04\bin\javac customer.xsdconfig
이 명령 행 은 scomp 에 customerXmlBean.jar 를 생 성하 여 build 디 렉 터 리 에 두 는 동시에
소스 코드 를 build\src 에 생 성 합 니 다.Schema 파일 은 customer.xsd 이 고 xsdconfig 파일 은 customer.xsdconfig 입 니 다.
사실,생 성 된 자바 소스 코드 는 큰 역할 을 하지 않 습 니 다.jar 파일 을 원 합 니 다.build\src\sample\xmlbean 에서 생 성 된 Classes 를 먼저 보 겠 습 니 다.
CustomersDocument.java
--전체 XML 문서 의 Java Class 매 핑
CustomerType.java
--노드 sustomer 의 매 핑
AddressType.java
--노드 address 의 매 핑
BillingAddressType.java
--노드 빌 링 어드레스 의 매 핑
PrimaryAddressType.java
--노드 primary Address 의 매 핑
자,이제 우리 의 모든 준비 작업 이 완료 되 었 습 니 다.다음은 중점 에 들 어 갑 니 다.방금 생 성 된 jar 파일 을 이용 하여 XML 을 읽 고 쓰 십시오.
5.XMLbean 을 이용 하여 XML 파일 읽 기
XMLbean 2.0.0\lib\의 Jar 파일 과 방금 우리 가 만 든 customerXmlBean.jar 를 추가 하 는 자바 Project 를 새로 만 듭 니 다.
Project 의 ClassPath 로 갑 니 다.
자바 클래스 를 새로 만 듭 니 다:customerXMLbean.원본 코드 는 다음 과 같 습 니 다:
package com.sample.reader;
import java.io.File;
import sample.xmlbean.*;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.xmlbeans.XmlOptions;
public class CustomerXMLBean {
private String filename = null;
public CustomerXMLBean(String filename) {
super();
this.filename = filename;
}
public void customerReader() {
try {
File xmlFile = new File(filename);
CustomersDocument doc = CustomersDocument.Factory.parse(xmlFile);
CustomerType[] customers = doc.getCustomers().getCustomerArray();
for (int i = 0; i < customers.length; i++) {
CustomerType customer = customers[i];
println("Customer#" + i);
println("Customer ID:" + customer.getId());
println("First name:" + customer.getFirstname());
println("Last name:" + customer.getLastname());
println("Gender:" + customer.getGender());
println("PhoneNumber:" + customer.getPhoneNumber());
// Primary address
PrimaryAddressType primaryAddress = customer.getAddress().getPrimaryAddress();
println("PrimaryAddress:");
println("PostalCode:" + primaryAddress.getPostalCode());
println("AddressLine1:" + primaryAddress.getAddressLine1());
println("AddressLine2:" + primaryAddress.getAddressLine2());
// Billing address
BillingAddressType billingAddress = customer.getAddress().getBillingAddress();
println("BillingAddress:");
println("Receiver:" + billingAddress.getReceiver());
println("PostalCode:" + billingAddress.getPostalCode());
println("AddressLine1:" + billingAddress.getAddressLine1());
println("AddressLine2:" + billingAddress.getAddressLine2());
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
private void println(String str) {
System.out.println(str); } public static void main(String[] args) {
String filename = "F://JavaTest//Eclipse//XMLBean//xml//customers.xml";
CustomerXMLBean customerXMLBean = new CustomerXMLBean(filename);
customerXMLBean.customerReader();
}
}
출력 결 과 를 참조 하여 실행 합 니 다:
Customer#0
Customer ID:1
First name:Jessica
Last name:Lim
Gender:female
PhoneNumber:1234567
PrimaryAddress:
PostalCode:350106
AddressLine1:#25-1
AddressLine2:SHINSAYAMA 2-CHOME
BillingAddress:
Receiver:Ms Danielle
PostalCode:350107
AddressLine1:#167
AddressLine2:NORTH TOWER HARBOUR CITY
Customer#1
Customer ID:2
First name:David
Last name:Bill
Gender:male
PhoneNumber:808182
PrimaryAddress:
PostalCode:319087
AddressLine1:1033 WS St.
AddressLine2:Tima Road
BillingAddress:
Receiver:Mr William
PostalCode:672993
AddressLine1:1033 WS St.
AddressLine2:Tima Road
어 때,쉽 지 않 아?XMLbean 의 위력.
6.XMLbean 을 이용 하여 XML 파일 쓰기
XML bean 을 이용 하여 XML 문 서 를 만 드 는 것 도 쉬 운 일 입 니 다.Method 를 하나 더 추가 합 니 다.
자바 클 라 스 를 보 세 요:
public void createCustomer() {
try {
// Create Document
CustomersDocument doc = CustomersDocument.Factory.newInstance();
// Add new customer
CustomerType customer = doc.addNewCustomers().addNewCustomer();
// set customer info
customer.setId(3);
customer.setFirstname("Jessica");
customer.setLastname("Lim");
customer.setGender("female");
customer.setPhoneNumber("1234567");
// Add new address
AddressType address = customer.addNewAddress();
// Add new PrimaryAddress
PrimaryAddressType primaryAddress = address.addNewPrimaryAddress();
primaryAddress.setPostalCode("350106");
primaryAddress.setAddressLine1("#25-1");
primaryAddress.setAddressLine2("SHINSAYAMA 2-CHOME");
// Add new BillingAddress
BillingAddressType billingAddress = address.addNewBillingAddress();
billingAddress.setReceiver("Ms Danielle");
billingAddress.setPostalCode("350107");
billingAddress.setAddressLine1("#167");
billingAddress.setAddressLine2("NORTH TOWER HARBOUR CITY");
File xmlFile = new File(filename);
doc.save(xmlFile); } catch (Exception ex) {
ex.printStackTrace(); } }
main method.
public static void main(String[] args) {
String filename = "F://JavaTest//Eclipse//XMLBean//xml//customers_new.xml";
CustomerXMLBean customerXMLBean = new CustomerXMLBean(filename);
customerXMLBean.createCustomer();
}
실행,customers 열기new.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Customers>
<customer>
<id>3</id>
<gender>female</gender>
<firstname>Jessica</firstname>
<lastname>Lim</lastname>
<phoneNumber>1234567</phoneNumber>
<address>
<primaryAddress>
<postalCode>350106</postalCode>
<addressLine1>#25-1</addressLine1>
<addressLine2>SHINSAYAMA 2-CHOME</addressLine2>
</primaryAddress>
<billingAddress>
<receiver>Ms Danielle</receiver>
<postalCode>350107</postalCode>
<addressLine1>#167</addressLine1>
<addressLine2>NORTH TOWER HARBOUR CITY</addressLine2>
</billingAddress>
</address>
</customer>
</Customers>
7.XML bean 을 이용 하여 XML 파일 수정
우 리 는 방법 을 하나 더 추가 합 니 다.
public void updateCustomer(int id,String lastname) {
try {
File xmlFile = new File(filename);
CustomersDocument doc = CustomersDocument.Factory.parse(xmlFile);
CustomerType[] customers = doc.getCustomers().getCustomerArray();
for (int i = 0; i < customers.length; i++) {
CustomerType customer = customers[i];
if(customer.getId()==id){
customer.setLastname(lastname);
break;
}
}
doc.save(xmlFile);
} catch (Exception ex) {
ex.printStackTrace();
}
}
main method:
public static void main(String[] args) {
String filename = "F://JavaTest//Eclipse//XMLBean//xml//customers_new.xml";
CustomerXMLBean customerXMLBean = new CustomerXMLBean(filename);
customerXMLBean.updateCustomer(3,"last"); }
실행 후,우 리 는 고객 번호 가 3 인 고객 의 lastname 이 last 로 바 뀌 었 음 을 볼 수 있 습 니 다.
8.XMLbean 을 이용 하여 customer 삭제
방법 을 하나 더 추가 합 니 다:
public void deleteCustomer(int id) {
try {
File xmlFile = new File(filename);
CustomersDocument doc = CustomersDocument.Factory.parse(xmlFile);
CustomerType[] customers = doc.getCustomers().getCustomerArray();
for (int i = 0; i < customers.length; i++) {
CustomerType customer = customers[i];
if(customer.getId()==id){
customer.setNil() ;
break;
}
}
doc.save(xmlFile);
} catch (Exception ex) {
ex.printStackTrace();
}
}
main method:
public static void main(String[] args) {
String filename = "F://JavaTest//Eclipse//XMLBean//xml//customers_new.xml";
CustomerXMLBean customerXMLBean = new CustomerXMLBean(filename);
customerXMLBean.deleteCustomer(3);
}
실행 하면 우 리 는 고객 번호 가 3 인 고객 의 자료 가 이미 삭제 되 었 음 을 볼 수 있 을 것 이다.
9.조회 XML
본 고 에서 언급 한 것 을 제외 하고 XML bean 을 이용 하여 XML 의 읽 기와 쓰기 조작 을 가볍게 완성 할 수 있 는 동시에 XPath 와 XQuery 를 결합 하여
XML bean 은 SQL 조회 데이터베이스 처럼 XML 데 이 터 를 편리 하 게 조회 할 수 있 습 니 다.XML 조회 와 XML 데이터 베 이 스 를 어떻게 만 드 는 지 에 대해 서 는 다른 글 에서 토론 하 겠 습 니 다.
XMLbeans 는 데이터 바 인 딩 에 사용 할 다음 응용 프로그램 인터페이스(API)를 제공 합 니 다.
* XmlObject:자바 류 가 XML Schema 를 통 해 생 성 된다 면 이 자바 류 는 모두 XmlObject API 에서 파생 됩 니 다.
* XmlCursor:XmlCursor API 는 XML 인 포 셋 에 대한 저층 접근 권 을 제공 합 니 다.XML 인 스 턴 스 의 커서 위 치 를 표시 합 니 다.
* SchemaType:기본 메타 정보 에 사용 되 는 XML Schema 대상 모델.
XMLbean 컴 파일 러 는 XML 모드 의 대상 을 생 성 합 니 다.이 대상 은 패턴 의 구조 와 제약 을 나타 내 는 유 니 버 설 자바 류 와 인터페이스 임 을 나타 낸다.자바 클래스 와 인 터 페 이 스 를 생 성 한 후 이 모드 에 맞 는 XML 인 스 턴 스 문 서 는 연 결 됩 니 다.바 인 딩 과정 은 대상 을 대상 으로 하 는 방식 으로 XML bean API 를 사용 하여 실제 XML 인 스 턴 스 문서 에 접근 하 는 데 이 터 를 포함한다.
끝 말
XML bean 은 XML 을 쉽게 읽 고 쓰 는 데 도움 을 줄 수 있 습 니 다.이것 은 XML 의 학습 과 사용 을 낮 추 는 데 도움 이 될 것 입 니 다.이 기초 가 있 으 면 개발 자 들 은 XML 관련 기술 과 웹 서비스,JMS 등 다른 J2EE 기술 을 더 많이 배우 기 위해 좋 은 기 초 를 다 질 것 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.