sitelink1 | |
---|---|
sitelink2 | |
sitelink3 | |
extra_vars4 | |
extra_vars5 | |
extra_vars6 |
사용자 정의 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
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
15 |
Map 사용 예제
![]() | 황제낙엽 | 2010.10.17 | 104 |
14 | Digester/FAQ | 황제낙엽 | 2010.10.16 | 232 |
13 | RuleXML 작성법 | 황제낙엽 | 2009.01.20 | 177 |
12 | 유용한 링크 | 황제낙엽 | 2009.01.20 | 73 |
11 | Digester.peek(int n) 메서드의 고찰 | 황제낙엽 | 2008.08.26 | 88 |
10 |
Rule클래스의 작성 및 RuleXml 파일 작성 예제
![]() | 황제낙엽 | 2008.05.15 | 82 |
9 | Package org.apache.commons.digester Description - V1.8 (해석중) | 황제낙엽 | 2008.05.15 | 173 |
» | Including programmatically-created rules: 의 고찰 | 황제낙엽 | 2008.05.14 | 80 |
7 | Digester 의 xmlrules 를 이용하여 Properties 파일 읽어들이기 | 황제낙엽 | 2008.05.14 | 98 |
6 |
Parsing and Processing Large XML Documents with Digester Rules (해석중)
![]() | 황제낙엽 | 2008.05.13 | 1567 |
5 | Package org.apache.commons.digester.xmlrules | 황제낙엽 | 2008.05.13 | 92 |
4 |
Digester가 제공하는 기본 Rule을 이용한 예제 프로젝트 분석
![]() | 황제낙엽 | 2008.05.13 | 174 |
3 | Digester 의 소개 및 기본적인 사용법 | 황제낙엽 | 2008.05.09 | 116 |
2 | Parsing, indexing, and searching XML with Digester and Lucene | 황제낙엽 | 2008.05.07 | 534 |
1 | Digester란? | 황제낙엽 | 2008.05.07 | 136 |