XMLEncoder (Java Platform SE 6) - xrath.com 에서 번역됨

개요 | 패키지 | 클래스 | 사용 | 계층 트리 | 비추천 API | 색인 | 헬프

JavaTM Platform
Standard Ed. 6

앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드

## java.beans
클래스 XMLEncoder

    java.lang.Object
      java.beans.Encoder
          java.beans.XMLEncoder

    public class XMLEncoder

extends Encoder

`XMLEncoder` 클래스는 `ObjectOutputStream` 의 보완적인 대체 클래스이며,`ObjectOutputStream` 로 `Serializable` 객체의 바이너리 표현을 생성하는 경우와 같게 해 JavaBean 의 텍스트 표현을 생성합니다. 예를 들어, 다음의 코드에서는, 제공된 JavaBean 와 그 모든 프로퍼티의 텍스트 표현을 생성할 수 있습니다.

           XMLEncoder e = new XMLEncoder(
                              new BufferedOutputStream(
                                  new FileOutputStream("Test.xml")));
           e.writeObject(new JButton("Hello, world"));
           e.close();

API 는 비슷하지만,`XMLEncoder` 클래스는,JavaBean 의 그래프를 그 공개 프로퍼티의 텍스트 표현으로서 어카이브(archive)화하는 목적으로 설계되고 있습니다. 이 방식에서 작성된 문서는, Java 원시 파일과 같이, 필요한 클래스의 구현이 변경으로부터 보호되고 있습니다. 프로세스간 통신 및 일반적으로 목적의 직렬화에는, 지금까지 대로 `ObjectOutputStream` 를 사용하는 것을 추천합니다.

`XMLEncoder` 클래스는,JavaBean 를, XML 스펙 버젼 1.0 으로 Unicode/ISO 10646 캐릭터 세트의 UTF-8 캐릭터 세트에 준거한 XML 문서로서 표현하는 디폴트의 지정을 제공합니다. `XMLEncoder` 클래스에 의해 생성되는 XML 문서에는, 다음과 같은 특징이 있습니다.

- 이식성과 버젼의 차이에 대한 허용성: 클래스의 비공개 구현에는 일절 의존하지 않기 때문에, Java 원시 파일과 같게, 일부의 클래스의 버젼이 다른 복수의 환경간, 혹은 벤더가 다른 VM 간에 교환 가능합니다.
- 컴팩트한 구조: `XMLEncoder` 클래스는 내부에서 장황성 삭감 알고리즘을 사용하기 위해(때문에), Bean 의 프로퍼티의 디폴트 값가 스트림에 기입해지지 않습니다.
- 장해 허용성: 파일이 망가지거나 로컬라이즈 된 어카이브(archive)내의 클래스의 API 가 변경 되거나 해, 파일내에 비구조상의 에러가 생겨도, 에러를 보고해, 문서내의 에러의 영향을 받고 있지 않은 부분을 계속 로드할 수가 있습니다.

이하는, swing 툴 킷의 사용자 인터페이스 컴퍼넌트를 포함한 XML 어카이브(archive)의 예입니다.

     <? xml version="1.0" encoding="UTF-8"? >
     <java version="1.0" class="java.beans.XMLDecoder">
     <object class="javax.swing.JFrame">
       <void property="name">
         <string>frame1</string>
       </void>
       <void property="bounds">
         <object class="java.awt.Rectangle">
           <int>0</int>
           <int>0</int>
           <int>200</int>
           <int>200</int>
         </object>
       </void>
       <void property="contentPane">
         <void method="add">
           <object class="javax.swing.JButton">
             <void property="label">
               <string>Hello</string>
             </void>
           </object>
         </void>
       </void>
       <void property="visible">
         <boolean>true</boolean>
       </void>
     </object>
     </java>

XML 구문은, 다음의 규약에 준거하고 있습니다.

- 개개의 요소는 메소드 호출을 나타낸다
- object 태그는, 둘러싸는 요소의 인수로서 사용되는 값을 가지는 식을 나타낸다
- void 태그는, 실행되는 것만으로, 그 결과는 둘러싸는 메소드의 인수로서 사용되지 않는 문장을 나타낸다
- 다른 요소를 포함 하는 요소는, 이러한 요소를 인수로서 사용한다. 다만, 포함 되고 있는 요소에 void 태그가 포함되지 않은 경우에 한한다.
- 메소드명은 method 속성에 의해 나타내진다
- XML 의 표준 속성인 id 및 idref 를 사용해 이전의 식을 참조해, 객체 그래프의 순환을 처리한다
- class 속성을 사용해 정적 메소드 또는 생성자 의 타겟을 명시적으로 지정한다. 그 값은 완전 지정의 클래스명이 된다
- void 태그 첨부의 요소는, class 속성에 의해 타겟이 정의되어 있지 않은 경우, 외부 문맥을 타겟으로서 실행된다
- Java 의 String 클래스는, 특별한 것으로 해, <string>Hello, world</string> 에 기입해진다. 여기서, 캐릭터 라인에 포함되는 문자는, UTF-8 캐릭터 세트에 의해 바이트에 변환된다

모든 객체 그래프는 이것들 3 개의 태그로 기술할 수 있습니다만, 공통의 데이터 구조를 보다 간결하게 표현하기 위해(때문에), 다음의 정의가 이루어지고 있습니다.

- 디폴트의 메소드명은 new
- java 클래스의 참조는, <class>javax.swing.JButton</class> 라고 하는 형식에서 기술한다
- Java 원시형의 래퍼 클래스의 인스턴스는, 원시형의 이름을 태그로서 기술된다. 예를 들어,`Integer` 클래스의 인스턴스는 <int>123</int> 와 기술할 수 있다. `XMLEncoder` 클래스가, Java 원시형과 관련 래퍼 클래스간의 변환을 내부적으로 처리하는 Java 리플렉션 패키지를 사용하는 점에 주의하는 것. `XMLEncoder` 클래스의 API 자체는,`Object` 만을 취급한다.
- 이름의 선두의 캐릭터 라인이 get 로 시작되는 것 같은 인수 없음의 메소드를 표현하는 요소에서는, method 속성은 property 속성으로 옮겨놓을 수 있다. 덧붙여 property 속성의 값은, get 접두사를 삭제해, 메소드명의 선두의 문자를 알파벳의 소문자로 변경하는 것에 의해 얻을 수 있다
- 이름의 선두의 캐릭터 라인이 set 로 시작되는 것 같은 단일의 메소드를 표현하는 요소에서는, method 속성은 property 속성으로 옮겨놓을 수 있다. 덧붙여 property 속성의 값은, set 접두사를 삭제해, 메소드명의 선두의 문자를 알파벳의 소문자로 변경하는 것에 의해 얻을 수 있다
- get 메소드로서 지정되어 정수의 인수를 1 개 취하는 것 같은 메소드를 표현하는 요소에서는, method 속성은 index 속성으로 옮겨놓을 수 있다. 덧붙여 index 속성의 값은 최초의 인수의 값과 같게 된다
- set 메소드로서 지정되어 인수를 2 개 취하는 것 같은 메소드를 표현하는 요소에서는, method 속성은 index 속성으로 옮겨놓을 수 있다. 덧붙여 index 속성의 값은, 최초의 인수의 값과 같게 된다
- 배열의 참조는, array 태그에 의해 기술된다. class 속성은 그 배열의 subtype, length 속성은 그 배열의 길이를 지정한다.

상세한 것에 대하여는, 「The Swing Connection. 」의 「Using XMLEncoder 」를 참조해 주세요.

도입된 버젼:
  1.4
관련 항목:
  `XMLDecoder` , `ObjectOutputStream`

생성자 의 개요
`XMLEncoder (OutputStream out)` XML 인코딩을 사용해 스트림 `out` 에 JavaBeans 를 송신하는, 새로운 출력 스트림을 작성합니다.

메소드의 개요
`void` | `close ()` 이 메소드는,`flush` 를 호출해, 닫는 postamble를 기입해, 이 스트림에 관련지을 수 있고 있는 출력 스트림을 클로즈 합니다.
`void` | `flush ()` 이 메소드는, XML 인코딩에 관련지을 수 있었던 프리안불을 써내,`flush` 를 마지막으로 호출했을 때로부터 스트림에 기입해진 모든 값을 써냅니다.
`Object` | `getOwner ()` 이 엔코더의 소유자를 가져옵니다.
`void` | `setOwner (Object owner)` 이 엔코더의 소유자를 `owner` 로 설정합니다.
`void` | `writeExpression (Expression oldExp)` 스트림의 플래시시에 실제의 출력이 생성되도록(듯이), 식을 기록합니다.
`void` | `writeObject (Object o)` 지정된 객체의 XML 표현을 출력에 기입합니다.
`void` | `writeStatement (Statement oldStm)` 스트림의 플래시시에 실제의 출력이 생성되도록(듯이), 문장을 기록합니다.

클래스 java.beans. Encoder 로부터 상속된 메소드
`get , getExceptionListener , getPersistenceDelegate , remove , setExceptionListener , setPersistenceDelegate`

클래스 java.lang. Object 로부터 상속된 메소드
`clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait`

생성자 의 상세

### XMLEncoder

    public XMLEncoder(OutputStream  out)

  XML 인코딩을 사용해 스트림 `out` 에 JavaBeans 를 송신하는, 새로운 출력 스트림을 작성합니다.

  파라미터:
    `out` - 객체의 XML 표현의 송신지가 되는 스트림
  관련 항목:
    `XMLDecoder.XMLDecoder(InputStream)`

메소드의 상세

### setOwner

    public void setOwner(Object  owner)

  이 엔코더의 소유자를 `owner` 로 설정합니다.

  파라미터:
    `owner` - 이 엔코더의 소유자
  관련 항목:
    `getOwner()`

### getOwner

    public Object  getOwner()

  이 엔코더의 소유자를 가져옵니다.

  반환값:
    이 엔코더의 소유자
  관련 항목:
    `setOwner(java.lang.Object)`

### writeObject

    public void writeObject(Object  o)

  지정된 객체의 XML 표현을 출력에 기입합니다.

  오버라이드(override):
    클래스 `Encoder` 내의 `writeObject`
  파라미터:
    `o` - 스트림에 기입해지는 객체
  관련 항목:
    `XMLDecoder.readObject()`

### writeStatement

    public void writeStatement(Statement  oldStm)

  스트림의 플래시시에 실제의 출력이 생성되도록(듯이), 문장을 기록합니다.

  이 메소드는, 지속적인 위양을 초기화하는 문맥내에서만 호출하도록 해 주세요.

  오버라이드(override):
    클래스 `Encoder` 내의 `writeStatement`
  파라미터:
    `oldStm` - 스트림에 기입해진다 문장
  관련 항목:
    `PersistenceDelegate.initialize(java.lang.Class, java.lang.Object, java.lang.Object, java.beans.Encoder)`

### writeExpression

    public void writeExpression(Expression  oldExp)

  스트림의 플래시시에 실제의 출력이 생성되도록(듯이), 식을 기록합니다.

  이 메소드는, 지속적인 위양을 초기화하는 문맥내, 또는 자원 번들로부터 읽어들이도록(듯이) 엔코더를 설정하는 문맥내에서만 호출하도록 해 주세요.

  XMLEncoder 로 자원 번들을 사용하는 상세한 것에 대하여는, http://java.sun.com/products/jfc/tsc/articles/persistence4/#i18n 를 참조해 주세요.

  오버라이드(override):
    클래스 `Encoder` 내의 `writeExpression`
  파라미터:
    `oldExp` - 스트림에 기입해진다 식
  관련 항목:
    `PersistenceDelegate.initialize(java.lang.Class, java.lang.Object, java.lang.Object, java.beans.Encoder)`

### flush

    public void flush()

  이 메소드는, XML 인코딩에 관련지을 수 있었던 프리안불을 써내,`flush` 를 마지막으로 호출했을 때로부터 스트림에 기입해진 모든 값을 써냅니다. 플래시 후, 이 스트림에 기입해진 값의 내부 참조는 모두 클리어 됩니다.

### close

    public void close()

  이 메소드는,`flush` 를 호출해, 닫는 postamble를 기입해, 이 스트림에 관련지을 수 있고 있는 출력 스트림을 클로즈 합니다.

개요 | 패키지 | 클래스 | 사용 | 계층 트리 | 비추천 API | 색인 | 헬프

JavaTM Platform
Standard Ed. 6

앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.