사용자 정의 Rule을 xmlrule로 등록하는 방법이다.
xml파일에 정의하는 pattern에 대응하는 범위는 1레벨밖에 지원할 수 없다는 것이다.
가령 위에 정의된 파싱할 xml데이터는 "root/foo/bar" 의 깊이를 가지고 있고,
xml에 정의된 pattern에서는 "root/foo" 로써 rule 클래스에서는 "root/foo/bar" 패턴일 경우 Bar객체를 생성하도록 정의하였으나,
"bar" 이하의 깊이 만약 "root/foo/bar/sel" 이라는 패턴이 있다면, 상단의 rule 클래스에서는 "root/foo/bar/sel"패턴에 대응하는 rule을 작성할 수 없다.
만일 "root/foo/bar/sel"패턴에 대응하는 rule을 작성하려면 새로운 클래스와 xml에도 라인 몇개가 추가되어야 한다.
Including programmatically-created rules:
때때로 via XML을 쉽게 정의하기 힘들때가 있다. 프로그램적으로 생성된 Rule set은 digester-rules XML 파일에 포함될 수 있다.
이것은 class 속성을 가지는 < include > element를 사용하여 수행된다. class 속성에 정의하는 클래스는 org.apache.commons.digester.xmlrules.DigesterRulesSource
인터페이스를 상속받는다.
이 인터페이스는 하나의 메서드를 정의하고 있는데 getRules(Digester) 이다. 이 메서드는 rule을 생성하고 추가하는 역할을 가진다.
The pattern concatenation(패턴 연관) works exactly as if the rules had been included from an XML file. Example:
File rules3.xml:
< ?xml version="1.0"? >
< !DOCTYPE digester-rules SYSTEM "digester-rules.dtd" >
< digester-rules >
< pattern value="root/foo" >
< object-create-rule classname="Foo"/ >
< include class="BarRuleCreator"/ >
< /pattern >
< /digester-rules >
BarRuleCreator class 정의:
public class BarRuleCreator implements DigesterRulesSource {
public void getRules(Digester digester) {
digester.addObjectCreate("bar", "Bar");
}
}
rules3.xml 을 파싱하는 것은 rules1.xml처럼 다음 같은 결과를 산출한다.
root/foo -> ObjectCreateRule(Foo)
root/foo/bar -> ObjectCreateRule(Bar)
위와 같은식으로 사용시 주의할 점은때때로 via XML을 쉽게 정의하기 힘들때가 있다. 프로그램적으로 생성된 Rule set은 digester-rules XML 파일에 포함될 수 있다.
이것은 class 속성을 가지는 < include > element를 사용하여 수행된다. class 속성에 정의하는 클래스는 org.apache.commons.digester.xmlrules.DigesterRulesSource
인터페이스를 상속받는다.
이 인터페이스는 하나의 메서드를 정의하고 있는데 getRules(Digester) 이다. 이 메서드는 rule을 생성하고 추가하는 역할을 가진다.
The pattern concatenation(패턴 연관) works exactly as if the rules had been included from an XML file. Example:
File rules3.xml:
< ?xml version="1.0"? >
< !DOCTYPE digester-rules SYSTEM "digester-rules.dtd" >
< digester-rules >
< pattern value="root/foo" >
< object-create-rule classname="Foo"/ >
< include class="BarRuleCreator"/ >
< /pattern >
< /digester-rules >
BarRuleCreator class 정의:
public class BarRuleCreator implements DigesterRulesSource {
public void getRules(Digester digester) {
digester.addObjectCreate("bar", "Bar");
}
}
rules3.xml 을 파싱하는 것은 rules1.xml처럼 다음 같은 결과를 산출한다.
root/foo -> ObjectCreateRule(Foo)
root/foo/bar -> ObjectCreateRule(Bar)
xml파일에 정의하는 pattern에 대응하는 범위는 1레벨밖에 지원할 수 없다는 것이다.
가령 위에 정의된 파싱할 xml데이터는 "root/foo/bar" 의 깊이를 가지고 있고,
xml에 정의된 pattern에서는 "root/foo" 로써 rule 클래스에서는 "root/foo/bar" 패턴일 경우 Bar객체를 생성하도록 정의하였으나,
"bar" 이하의 깊이 만약 "root/foo/bar/sel" 이라는 패턴이 있다면, 상단의 rule 클래스에서는 "root/foo/bar/sel"패턴에 대응하는 rule을 작성할 수 없다.
만일 "root/foo/bar/sel"패턴에 대응하는 rule을 작성하려면 새로운 클래스와 xml에도 라인 몇개가 추가되어야 한다.
< ?xml version="1.0"? >
< !DOCTYPE digester-rules SYSTEM "digester-rules.dtd" >
< digester-rules >
< pattern value="root/foo" >
< object-create-rule classname="Foo"/ >
< include class="BarRuleCreator"/ >
< pattern value="bar" >
< include class="SelRuleCreator"/ >
</pattern>
< /pattern >
< /digester-rules >
< !DOCTYPE digester-rules SYSTEM "digester-rules.dtd" >
< digester-rules >
< pattern value="root/foo" >
< object-create-rule classname="Foo"/ >
< include class="BarRuleCreator"/ >
< pattern value="bar" >
< include class="SelRuleCreator"/ >
</pattern>
< /pattern >
< /digester-rules >
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 58 | 톰캣에서 로그 파일 저장시 ansi 로 저장되는 현상 | 황제낙엽 | 2024.10.21 | 665 |
| 57 |
Jsoup 을 이용하여 웹 크롤링(Web Crawling)
| 황제낙엽 | 2023.08.09 | 496 |
| 56 | Apache Log4j™ 2 사용하기 | 황제낙엽 | 2023.04.28 | 594 |
| 55 | Migrating from Log4j 1.x to 2.x | 황제낙엽 | 2023.04.28 | 718 |
| 54 |
SLF4J 를 사용해야 하는 이유
| 황제낙엽 | 2022.09.17 | 584 |
| 53 | Apache Log4j 2 Configuration 파일 설정 | 황제낙엽 | 2020.04.01 | 818 |
| 52 |
이클립스에서 JUnit 사용하기
| 황제낙엽 | 2019.04.02 | 728 |
| 51 | 각 레벨별 출력파일 설정 예제 | 황제낙엽 | 2018.09.18 | 775 |
| 50 |
log4j-1.2.15.jar 와 log4j.properties 예제
| 황제낙엽 | 2017.08.04 | 840 |
| 49 |
POI HSSF, XSSF, SXSSF 성능 분석
| 황제낙엽 | 2013.11.05 | 2097 |
| 48 | POI-HSSF and POI-XSSF - Java API To Access Microsoft Excel Format Files | 황제낙엽 | 2013.11.05 | 1775 |
| 47 | Commons Logging과 Log4J | 황제낙엽 | 2013.03.07 | 733 |
| 46 |
Library & Properties 파일
| 황제낙엽 | 2011.12.23 | 981 |
| 45 |
Cell 의 wrap 설정 (텍스트 개행)
| 황제낙엽 | 2011.05.09 | 3610 |
| 44 |
XSSF Examples
| 황제낙엽 | 2011.05.04 | 816 |
| 43 | 병합된 셀의 스타일( border) 설정하기 | 황제낙엽 | 2011.05.03 | 2214 |
| 42 | 셀 크기 조정 (자동 크기 조정) | 황제낙엽 | 2011.05.03 | 8316 |
| 41 | 셀 병합 | 황제낙엽 | 2011.05.03 | 697 |
| 40 | WebSphere 에서 Log4j 사용하기 | 황제낙엽 | 2011.04.15 | 632 |
| 39 |
Map 사용 예제
| 황제낙엽 | 2010.10.17 | 622 |