반응형
출처: http://kr.blog.yahoo.com/kwon37xi/folder/3381246.html


TEXT 클래스

  • org.jdom.Text
  • Element 클래스는 getText() 메소드로 텍스트를 얻을 수 있지만, 내부적으로는 Text 클래스의 인스턴스를 만들어서 요소의 텍스트를 저장한다.
  • 이렇게 한 이유는 트리모델에서 탐색을 용이하게 하기 위해서이다.

EntityRef 클래스

  • org.jdom.EntityRef
  • XML 엔티티 참조를 나타낸다.
  • 만약 엔티티가 XML DTD나 스키마를 참조한다면, 이 클래스로 이름, 공개ID, 시스템ID를 설정하거나 반환할 수 있다.
  • JDOM 컨텐트 트리의 어디에나 위치할 수 있다.
  • 거의 사용되지 않는다.
  • EntityRef를 사용하기 위해서는 엔티티 확장을 하지 않게 해야한다.

    SAXBuilder builder = new SAXBuilder();
    
    // 엔티티 참조를 확장하지 않는다.(기본값은 true)
    builder.setExpandEntities(false);
    
    // EntityRef 객체를 포함하는 트리 생성
    Document doc = builder.build(inputStream);
    
  • 엔티티 확장을 true로 하면 엔티티를 만날 때는 실제 엔티티의 값으로 바뀐 것을 읽게 된다.
  • 엔티티 참조 생성

    EntityRef ref = new EntityRef("TrueNorthGuitarsTagline");
    ref.setSystemID("tngTagline.xml");
    
    // 트리에 넣는다.
    tagLineElement.addContent(ref);
    

Namespace 클래스

  • org.jdom.Namespace
  • 요소를 생성하거나 요소를 검색하는데 새로운 네임스페이스가 필요하다면, Namespace 클래스의 정적 메소드인 getNamespace()를 사용해야 한다.

    // 접두어가 있는 네임스페이스를 생성한다.
    Namespace schemaNamespace =
        Namespace.getNamespace("xsd", "http://www.w3.org/XMLSchema/2001");
    
    // 접두어가 없는 네임스페이스를 생성한다.
    Namespace javaxml2Namespace =
        Namespace.getNamespace("http://www.oreilly.com/javaxml2");
    
  • 네임스페이스 적용

    // 네임스페이스가 있는 요소 생성
    Element schema = new Element("schema", schemaNamespace);
    
    // 특정한 네임스페이스에 속한 자식 요소들을 찾는다.
    List chapterElements = contentElement.getChildren("chapter", javaxml2Namespace);
    
    // 요소에 새로운 네임스페이스를 선언한다.
    catalogElement.addNamespaceDeclaration(
        Namespace.getNamespace("tng", "http://www.truenorthguitars.com");
    
  • 접두어와 상관없이 Namespace의 URI가 동일하면 Namespace객체는 동일하다. - 이것은 표준 규약을 따르는 것이다.

JDOM Factory

  • org.jdom.JDOMFactory 인터페이스는 JDOM에 있는 모든 타입의 객체를 생성하기 위한 여러 메소드를 정의하고 있다.
  • 보통 JDOM은 org.jdom.DefaultJDOMFactory 클래스를 사용해서 JDOM 트리를 구성한다. DefaultJDOMFactory 클래스를 상속하여 자신만의 팩토리 클래스를 작성할 수 있다.

    class CustomJDOMFactory extends org.jdom.DeafultJDOMFactory {
        ....
    }
    
  • 사용자 정의 Factory 사용해서 JDOM 트리 구성하기 : setFactory(factory)

    SAXBuilder builder = new SAXBuilder();
    
    JDOMFactory factory = new CustomJDOMFactory();
    
    // 사용자 정의 팩토리를 사용하도록 설정
    builder.setFactory(factory);
    
  • JDOMFactory를 사용할 때는 필요한 메소드가 정확히 구현되었는지 확실히 확인해야 한다.

+ Recent posts