JAVA 의 XML 파일 -- 파일 쓰기

11669 단어 JAVA 기초
DOM 과 SAX 방식 은 JAVA 가 공식 적 으로 제공 하 는 방식 으로 XML 파일 을 만들어 정 보 를 저장 할 수 있 으 며, DOM4J 와 JDOM 은 비공 식적 으로 RSS 파일 을 만 들 수 있다.
1 DOM 방식 으로 XML 쓰기
1.1 준비 작업
  • 이전에 DOM 방식 으로 XML 파일 을 읽 은 것 과 마찬가지 로 DocumentBuilder 대상 을 만들어 야 합 니 다.
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
  • XML 파일 을 만들어 야 하기 때문에 parse () 방법 으로 new Document () 방법 으로 Document 대상 을 직접 가 져 올 필요 가 없습니다. 이것 은 우리 가 xml 파일 에 넣 어야 할 DOM 트 리 를 의미 합 니 다.
    Document document = db.newDocument();
  • 1.2 요소, 속성 및 요소 의 텍스트 만 들 기
  • createElement (String Element Name) 방법 으로 요 소 를 만 들 고 appendChild (Element e) 방법 으로 하위 요 소 를 추가 합 니 다.
    //     
    Element school = document.createElement("school");
    //       document  
    document.appendChild(school);
    //      ,             
    Element student = document.createElement("student");
    school.appendChild(student);
  • 요소 에 속성 을 설정 하고 setAttribute (name, value) 방법 을 사용 합 니 다:
    student.setAttribute("id", "0001");
  • setTextContext (String) 방법 으로 요소 에 텍스트 추가:
    name.setTextContext("  ");
  • 비고: 1. Document 와 Element 대상 에는 appendChild () 방법 이 있 습 니 다. 전 자 는 루트 요 소 를 추가 하고 한 번 만 사용 할 수 있 습 니 다. 그렇지 않 으 면 오류 가 발생 할 수 있 습 니 다 (HIERARCHI REQUEST ERR: 허용 되 지 않 는 위치 에 노드 를 삽입 하려 고 시도 합 니 다). 후 자 는 호출 된 요소 에 하위 요 소 를 추가 합 니 다.
    1.3 XML 파일 만 들 기
  • Transformer Factory 대상 을 new Instance () 를 통 해 만 든 다음 Transformer 대상 을 Transformer Factory 대상 을 통 해 만 든 new Transformer () 방법 (주의 와 DocumentBuilder (Factory) 비교):
    TransformerFactory tff = TransformerFactory.newInstance();
    Transformer tf = tff.newTransformer();
  • Transformer 대상 의 방법 transform (Source, stream) 방법 은 우리 가 만 든 Document 대상 을 XML 파일 로 바 꿀 수 있 습 니 다.
    tf.transform(new DOMSource(document),new streamResult(new File("students.xml");
  • 이렇게 만 든 xml 파일 의 모든 줄 이 한 줄 에 있 는 것 을 볼 수 있 습 니 다. tf 의 setOutProperty () 방법 으로 출력 속성 을 설정 할 수 있 습 니 다.
    tf.setOutputProperty(OutputKeys.INDENT,"yes");
  • 2 SAX 방식 으로 XML 쓰기
    2.1 준비 작업
  • SAXTransformer Factory 클래스 를 만 드 는 대상:
    SAXTransformerFactory stff = (SAXTransformerFactory)SAXTransformerFactory.newInstance();
  • SAXTransformer Factory 대상 의 new Transformer Handler () 방법 으로 Transformer Handler 를 만 드 는 인 스 턴 스:
    TransformerHandler handler = stff.newTransformerHandler();
  • handler 대상 을 통 해 transformer 대상 을 만 듭 니 다.
    Transformer transformer = handler.getTransformer();
  • setOutputProperty () 방법 으로 인 코딩 형식 을 설정 하고 줄 을 바 꿀 지 여부 등 속성 을 설정 합 니 다.
    transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
    transformer.setOutputProperty(OutputKeys.INDENT, "yes");
  • Result 대상 을 만 듭 니 다. 이 를 통 해 파일 생 성과 출력 흐름 을 작성 하고 handler 와 연결 합 니 다.
    Result result = new StreamResult(new fileOutputStream(new File("students2.xml")));
    handler.setResult(result);
    2.2 하위 요소 생 성 및 속성 은 handler 대상 을 이용 하여 xml 파일 내용 을 작성 합 니 다.
  • startDocument () 방법 으로 document () 을 열 고 요 소 를 추가 합 니 다. startElement (String url, String localName, String qName, String attributes) 방법 (앞의 두 개 (네 임 스페이스 와 관련) 을 통 해 비 울 수 있 습 니 다. 다음 두 개 는 요소 이름과 요소 속성 집합 입 니 다):
    handler.startDocument();
    handler.startElement("","","school",attr);//attr        
  • 이전 단계 에서 Attributes 를 전달 하고 Attributes Impl 대상 을 만 듭 니 다. addAttribute (String url, String localName, String qName, String type, String value):
    AttributeImpl attr = new AttributeImpl();
    attr.addAttribute("","","id","","0001");
  • 요소 에 텍스트 를 추가 하고 character
  • 를 통 해
  • 위 와 같이 생 성 된 XML 파일 에 내용 이 없 음 을 알 수 있 습 니 다. endDocument () 를 호출 하여 끝내 야 합 니 다. 또한 종료 전에 endElement (String url, String localName, String qName) 방법 으로 모든 요 소 를 끝내 야 합 니 다.
    handler.endElement("","","school");
    handler.endDocument();
    비고:
  • 각 요소 의 startElement 와 endElement 방법의 내장 과 메 인 요소 가 대응 하지 않 으 면 XML 파일 에 오류 가 발생 할 수 있 습 니 다
  • startDocument 와 endDocument 호출 방법
  • transformer 설정 속성 은 handler. setResult (result) 앞 에 써 야 합 니 다. 그렇지 않 으 면 설정 한 속성 이 유효 하지 않 습 니 다

  • 3 DOM4J 방식 으로 XML 쓰기
    3.1 RSS 소개
    간이 정보 취 합 (취 합 내용) 은 RSS 가 XML 기준 을 바탕 으로 인터넷 에서 광범 위 하 게 사용 되 는 콘 텐 츠 포장 및 배달 프로 토 콜 이다. RSS (Really Simple Syndication) 는 사이트 콘 텐 츠 를 묘사 하고 동기 화 하 는 형식 으로 가장 광범 위 한 XML 응용 프로그램 을 사용한다.
    3.2 RSS 요소 및 속성 생 성
  • DocumetHelper 의 createDocument () 방법 으로 Document 인 스 턴 스 를 가 져 옵 니 다 (전체 XML 파일 을 대표 합 니 다):
    Document document = DocumentHelper.createDocument();
  • 문서 에 있 는 addElement (String) 방법 으로 루트 요 소 를 만 들 고 addAttribute (String, String) 방법 으로 루트 요소 에 속성 을 추가 합 니 다.
    Element rss = document.addElement("rss");
    rss.addAttribute("version","2.0");
  • 특정한 요소 에 하위 요 소 를 만 들 고 Element 의 addElement (String) 방법 을 통 해 setText (String) 방법 으로 요소 에 텍스트 내용 을 추가 합 니 다.
    Element channel = rss.addElement("channel");
    channel.setText("CSDN");
  • 3.3 XML 파일 생 성
  • XML Writer 의 write () 방법 으로 만 들 고 XML Writer 의 Output 매개 변수 구조 방법 으로 XML Writer 인 스 턴 스 를 만 듭 니 다.
    File file = new File("rssnews.xml");
    XMLWriter writer = new XMLWriter(new FileOutputStream(file));
  • XML 파일 형식 을 설정 합 니 다. OutputFormat 의 createPrettyPrint () 방법 으로 '예 쁜' 형식 (들 여 쓰기 와 줄 바 꾸 기) 을 설정 하고 setEncoding (String encoding) 방법 으로 인 코딩 형식 을 설정 합 니 다.
    OutputForm format = OutputFormat.createPrettyPrint();
    format.setEncoding("GBK");
    이렇게 format 을 XML Writer 에 전달 하 는 구조 방법 은 이전 코드 를 수정 하고 다른 구조 방법 을 사용 합 니 다.
    XMLWriter writer = new XMLWriter(new FileOutputStream(file),format);
  • 전의 문자 (예 를 들 어 괄호 "
    writer.setEscapeText(false);
    를 처리 합 니 다. 이 방법의 기본 매개 변 수 는 true 이 고 전 의 를 대표 하기 때문에 false 는 전 의 를 대표 하지 않 습 니 다.
  • 만 든 xml 파일 에 document 을 기록 합 니 다:
    writer.write(document);
  • 비고: 1. 던 지 는 이상 에 주의 하 십시오. 2. 이상 사용 하 는 종 류 는 org. dom4j 가방 에서 나 옵 니 다.
    4 JDOM 방식 으로 XML 해석
  • 뿌리 요 소 를 생 성하 고 속성 을 추가 합 니 다:
    Element rss = new Element("rss");
    rss.setAttribute("version","2.0");
  • 뿌리 요소 에 들 어 가 는 구조 방법 으로 document 대상 을 생 성 합 니 다.
    Document document = new Document(rss);
  • 요소 에 하위 요 소 를 추가 하고 하위 요소 에 텍스트 내용 을 추가 합 니 다
    Element channel = new Element("channel");
    rss.addContent(channel);
    channel.setText("CSDN");
  • XMLoutputer 대상 을 만 들 고 document 을 XML 문서 로 변환 합 니 다.
    XMLOutputter outputter = new XMLOutputter();
    outputter.output(document , new FileOutputStream(new File("rssnews.xml")));
    XML 에서 형식 설정 이 필요 합 니 다. XMLoutputter () 에 Format 대상 을 전달 하여 줄 바 꾸 기, 인 코딩 형식 등 을 설정 할 수 있 습 니 다.
    Format format = Format.getCompactFormat();
    format.setIndent("");
  • 좋은 웹페이지 즐겨찾기