Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Lift
- express for node.js
- node.js web framework
- 메일왕창보내는법
- 책이야기
- 스킨 스쿠버
- php thumbnail
- ajax
- Eclipse
- 명사 분석기
- 나의 프로젝트
- rss
- 명사 추출기
- 디즈니씨
- 명사 뽑아내기
- Cross
- 주식이야기
- flex3
- C/C++
- iBatis
- nodejs express
- ror실행
- php
- ejb
- Node.js
- 나의 취미
- docker
- scala
- 베트남어
- 도커
Archives
- Today
- Total
nkdk의 세상
trans돔과 sax를 하며 xml 을 마칩니다. 본문
trans돔과 sax를 하며 xml 을 마칩니다.
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.apache.crimson.tree.*;
public class TransDom {
static StringBuffer sb = new StringBuffer(); // 스트링 객체 생성
public static void main(String[] args) throws Exception{
if(args.length != 2) {
System.out.println("파일명 오류");
System.exit(-1);
}
String arg0 = args[0];
// DOM 준비
DocumentBuilderFactory docF = DocumentBuilderFactory.newInstance(); // 객체 생성됨
DocumentBuilder docB = docF.newDocumentBuilder();
Document doc = docB.parse(new FileInputStream(arg0));
Element root = doc.getDocumentElement();
// XML선언
sb.append("<?xml version=\"1.0\" encoding=\"euc-kr\"?>");
sb.append("<학생정보>");
trans(root);
sb.append("</학생정보>");
// 문자열 써넣기
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(args[1])));
pw.println(sb);
pw.close();
}
public static void trans(Node n) {
for(Node ch = n.getFirstChild();ch != null;ch.getNextSibling()){
if(ch.getNodeType() == Node.ELEMENT_NODE) {
if(ch.getNodeName().equals("student")) {
sb.append("학생");
trans(ch);
sb.append("</학생>");
} else if(ch.getNodeName().equals("name")) {
sb.append("이름");
trans(ch);
sb.append("</이름>");
} else if(ch.getNodeName().equals("age")) {
sb.append("나이");
trans(ch);
sb.append("</나이>");
}
} else if (ch.getNodeType() == Node.TEXT_NODE && ch.getNodeValue().trim().length() !=0) {
sb.append(ch.getNodeValue());
}
}
}
}
<?xml version="1.0" encoding="EUC-KR"?>
<student>
서울시 중구 서소문동
123-1234
<name>박치기</name>
</student>
import java.io.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
public class SaxAttr {
public static void main(String[] args) throws Exception{
if(args.length != 1) {
System.out.println("실행 실패:파일명 부여");
System.exit(1);
}
// sax를 준비
SAXParserFactory spf = SAXParserFactory.newInstance();
// sax파서 객체 생성
SAXParser sp = spf.newSAXParser();
// 이벤트 핸들러 클래스 생성
AttrHandler ah = new AttrHandler();
sp.parse(new File(args[0]), ah);
}
}
class AttrHandler extends DefaultHandler {
// sax는 이벤트 단위로 실행할 때 사용하는 것이다.
public void startDocument() throws SAXException{ // 시작 도큐먼트
System.out.println("학생정보-------------------");
}
public void endDocument() throws SAXException{ // 끝 도큐먼트 상속
}
//startElement를 이용하여 XML문서 속성 정보 접근
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException{
if(qName.equals("address")) {
String ty = attributes.getValue("type");
System.out.print(ty+" 주소:");
}else if(qName.equals("phone")) {
String ty = attributes.getValue("type");
System.out.print(ty+" 집전화:");
}else if(qName.equals("name")) {
System.out.print("이름:");
}
}
// 각 요소의 자료 출력
public void characters(char ch[], int start, int length) {
System.out.println(new String(ch, start, length));
}
}
import java.io.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
public class SaxSelect {
public static void main(String[] args) throws Exception{
if(args.length != 1) {
System.out.println("실행 실패:파일명 부여");
System.exit(1);
}
// sax를 준비
SAXParserFactory spf = SAXParserFactory.newInstance();
// sax파서 객체 생성
SAXParser sp = spf.newSAXParser();
// 이벤트 핸들러 클래스 생성
SelectHandler sh = new SelectHandler();
sp.parse(new File(args[0]), sh);
}
}
class SelectHandler extends DefaultHandler {
StringBuffer sb = new StringBuffer();
boolean isPrint=false;
public void startDocument() throws SAXException{ // 시작 도큐먼트
sb.append("<?xml version=\"1.0\" encoding=\"euc-kr\"?>\n");
sb.append("<student>\n\t");
}
public void endDocument() throws SAXException{ // 끝 도큐먼트 상속
sb.append("\n</student>");
try {
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("new_std.xml")));
pw.println(sb);
pw.close();
} catch (Exception e) {}
}
//startElement를 이용하여 XML문서 속성 정보 접근
public void startElement(String namespaceURI, String localName, String qName, Attributes attributes) {
if(qName.equals("phone")) {
sb.append("<" + qName + ">");
isPrint = true;
}
}
// 각 요소의 자료 출력
public void endElement(String namespaceURI, String localName, String qName) { // 요소의 끝
if(qName.equals("phone")) {
sb.append("</" + qName + ">");
isPrint=false;
}
}
public void characters(char ch[], int start, int length) {
String str=new String(ch, start, length);
if(str.trim().length() != 0 && isPrint == true) {
sb.append(str);
}
}
// sax를 하면서 기본적으로 처리 해야 할 것들 물론 생략도 가능하다.
}
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.apache.crimson.tree.*;
public class TransDom {
static StringBuffer sb = new StringBuffer(); // 스트링 객체 생성
public static void main(String[] args) throws Exception{
if(args.length != 2) {
System.out.println("파일명 오류");
System.exit(-1);
}
String arg0 = args[0];
// DOM 준비
DocumentBuilderFactory docF = DocumentBuilderFactory.newInstance(); // 객체 생성됨
DocumentBuilder docB = docF.newDocumentBuilder();
Document doc = docB.parse(new FileInputStream(arg0));
Element root = doc.getDocumentElement();
// XML선언
sb.append("<?xml version=\"1.0\" encoding=\"euc-kr\"?>");
sb.append("<학생정보>");
trans(root);
sb.append("</학생정보>");
// 문자열 써넣기
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(args[1])));
pw.println(sb);
pw.close();
}
public static void trans(Node n) {
for(Node ch = n.getFirstChild();ch != null;ch.getNextSibling()){
if(ch.getNodeType() == Node.ELEMENT_NODE) {
if(ch.getNodeName().equals("student")) {
sb.append("학생");
trans(ch);
sb.append("</학생>");
} else if(ch.getNodeName().equals("name")) {
sb.append("이름");
trans(ch);
sb.append("</이름>");
} else if(ch.getNodeName().equals("age")) {
sb.append("나이");
trans(ch);
sb.append("</나이>");
}
} else if (ch.getNodeType() == Node.TEXT_NODE && ch.getNodeValue().trim().length() !=0) {
sb.append(ch.getNodeValue());
}
}
}
}
<?xml version="1.0" encoding="EUC-KR"?>
<student>
서울시 중구 서소문동
<name>박치기</name>
</student>
import java.io.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
public class SaxAttr {
public static void main(String[] args) throws Exception{
if(args.length != 1) {
System.out.println("실행 실패:파일명 부여");
System.exit(1);
}
// sax를 준비
SAXParserFactory spf = SAXParserFactory.newInstance();
// sax파서 객체 생성
SAXParser sp = spf.newSAXParser();
// 이벤트 핸들러 클래스 생성
AttrHandler ah = new AttrHandler();
sp.parse(new File(args[0]), ah);
}
}
class AttrHandler extends DefaultHandler {
// sax는 이벤트 단위로 실행할 때 사용하는 것이다.
public void startDocument() throws SAXException{ // 시작 도큐먼트
System.out.println("학생정보-------------------");
}
public void endDocument() throws SAXException{ // 끝 도큐먼트 상속
}
//startElement를 이용하여 XML문서 속성 정보 접근
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException{
if(qName.equals("address")) {
String ty = attributes.getValue("type");
System.out.print(ty+" 주소:");
}else if(qName.equals("phone")) {
String ty = attributes.getValue("type");
System.out.print(ty+" 집전화:");
}else if(qName.equals("name")) {
System.out.print("이름:");
}
}
// 각 요소의 자료 출력
public void characters(char ch[], int start, int length) {
System.out.println(new String(ch, start, length));
}
}
import java.io.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
public class SaxSelect {
public static void main(String[] args) throws Exception{
if(args.length != 1) {
System.out.println("실행 실패:파일명 부여");
System.exit(1);
}
// sax를 준비
SAXParserFactory spf = SAXParserFactory.newInstance();
// sax파서 객체 생성
SAXParser sp = spf.newSAXParser();
// 이벤트 핸들러 클래스 생성
SelectHandler sh = new SelectHandler();
sp.parse(new File(args[0]), sh);
}
}
class SelectHandler extends DefaultHandler {
StringBuffer sb = new StringBuffer();
boolean isPrint=false;
public void startDocument() throws SAXException{ // 시작 도큐먼트
sb.append("<?xml version=\"1.0\" encoding=\"euc-kr\"?>\n");
sb.append("<student>\n\t");
}
public void endDocument() throws SAXException{ // 끝 도큐먼트 상속
sb.append("\n</student>");
try {
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("new_std.xml")));
pw.println(sb);
pw.close();
} catch (Exception e) {}
}
//startElement를 이용하여 XML문서 속성 정보 접근
public void startElement(String namespaceURI, String localName, String qName, Attributes attributes) {
if(qName.equals("phone")) {
sb.append("<" + qName + ">");
isPrint = true;
}
}
// 각 요소의 자료 출력
public void endElement(String namespaceURI, String localName, String qName) { // 요소의 끝
if(qName.equals("phone")) {
sb.append("</" + qName + ">");
isPrint=false;
}
}
public void characters(char ch[], int start, int length) {
String str=new String(ch, start, length);
if(str.trim().length() != 0 && isPrint == true) {
sb.append(str);
}
}
// sax를 하면서 기본적으로 처리 해야 할 것들 물론 생략도 가능하다.
}