2009-06-17 4 views
1

나는 자바에 새로운 오전 나는 말한다 자바 프로젝트에 문을 가로 질러 온 :java에서 Commons-Digester가 입력 XML 파일을 처리하는 방법은 무엇입니까?

Digester digester = DigesterLoader.createDigester(getClass() 
       .getClassLoader().getResource("rules.xml")); 

rules.xml 파일은 다양한 패턴이있는 모든 패턴은 클래스 명, methodName로 몇 가지 다른 속성과 같은 다른 특성을가집니다.

나는 소화기에 대해 봤지만 위의 문구로 나를 도울 수있는 유용한 것을 찾지 못했습니다. 위의 명령문을 실행하는 단계는 무엇입니까? 실제로이 XML 항목의 장점은 무엇입니까?

+0

다소 늦은 답장 : 아파치 소화기는 전체 파서가 아니며 때로는 매우 느릴 수 있습니다. 확장 vtd-xml이라는 새로운 옵션이있어서 xml 문서를 최대 256GB까지 처리 할 수 ​​있으며 전체 Xpath 및 mem 맵을 지원합니다 –

답변

2

swapnil, 내 Struts에서 Digester의 사용자로 돌아가서 솔직히 말해서 배우기/디버그하는 것이 까다로울 수 있습니다. 기본적으로 SAX 파서와 같은 특정 요소에 대한 이벤트 처리기를 설정하고 있습니다 (실제로는 배후에서 SAX를 사용하고 있습니다). 따라서 관심있는 노드에 대해 규칙 엔진에 몇 가지 XPath를 제공하고 인스턴스화 할 규칙을 설정하고 XML 파일에서 찾은 데이터로 일부 POJO의 속성을 설정합니다.

위대한 아이디어, 한번 익숙해지면 좋겠지 만 입력 xml 파일에 xsd가 있으면 JAXB를 사용하는 것이 좋습니다.

소화기에 대한 좋은 점 중 하나는 관심있는 요소 만 사용하므로 메모리 발자국이 좋고 낮다는 것입니다.

1

이 방법은 here이라고합니다. xml 파일은 컴파일 할 필요가 없으므로 Xml은 구성에 Java에서 일반적으로 사용됩니다. java 파일에서 동일한 구성을 사용하면 파일을 컴파일해야합니다.

1

클래스 로더를 사용하여 rules 파일을로드하는 방법을 알고 있다고 생각하십니까? 기본적으로 클래스 자체와 동일한 패키지를 찾고 파일의 절대 위치를 제공하는 URL을 만듭니다.

Digester는 사용하지 않았지만이 부분에 대한 빠른 읽기 (http://commons.apache.org/digester/)를 모두 설명해야합니다.

0

그들은 내 마지막 공연에서 그것을 사용했고 내가 기억하는 모두는 매우 느린 것입니다.

관련 문제