2011-10-16 1 views
0

'스레드 덤프'가 포함 된 XML 파일을 처리하는 데 Apache Digester (V3)를 사용하려고합니다. 파일에 많은 스레드 덤프가 포함되어 있고, 하나의 스레드 덤프에 많은 스레드가 포함되어 있으며, 스레드가 많은 라인Apache Digester Pattern : XSLT의 '.'와 같은 것이 필요합니다.

이 같이

구성된 스택 트레이스, 포함 (간체)

<threaddumps> 
<threaddump name="xxx"> 
<thread name="thread-1"> 
<stacktrace> 
<line> 
java.lang.wait 
</line> 
<line> 
... 
</line> 
</stacktrace> 
</thread> 
<thread name="thread-2"> 
... 
</threaddump> 
<threaddump name="yyy"> 
... 
</threaddumps> 

나는이 입력 파일을 처리하는 XML 기반 규칙을 사용하고를; 아래의 조각 :

<pattern value="thread"> 
       <object-create-rule classname="mypackagemodel.Thread"/> 
       <set-next-rule methodname="addThread" paramtype="mypackagemodel.Thread"/> 
       <set-properties-rule> 
        <alias attr-name="name" prop-name="name" /> 
       </set-properties-rule> 
       <pattern value="stacktrace/line"> 
         <object-create-rule classname="mypackagemodel.StackLine"/> 
         <set-next-rule methodname="addStackLine" paramtype="mypackagemodel.StackLine"/> 
         <!-- need something here --> 
       </pattern> 
</pattern> 

어떻게 'line'태그 사이에서 텍스트를 가져올 수 있습니까? 이미 'stacktrace/line'에 일치합니다. 사용할 하위 요소가 없습니다. 어떤 패턴을 사용할 수 있습니까?

또 다른 방법 - 'StackLine'개체가 만들어지고 올바르게 연결됩니다. 그저 'setName()'설정자를 호출 할 항목을 모르겠습니다.

답변

0

가있어 (XSLT에서 하나는 일반적으로 예를 들어 비슷한 시나리오에서 '()'현재 사용하거나 것 '.') :

: 분명히 빈 패턴 문자열이 현재 노드의 텍스트와 일치합니다 이 나를 위해 일했다 :

<bean-property-setter-rule pattern="" propertyname="line"/> 
관련 문제