2011-10-16 45 views
0

我正在嘗試使用Apache Digester(V3)來處理包含'線程轉儲'的XML文件:因此該文件包含許多線程轉儲,一個線程轉儲包含多個線程以及一個線程包含一個堆棧跟蹤,其中包括許多行Apache Digester模式:需要類似於XSLT的'。'或'current()'

像這樣:(簡體)

<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> 

我該如何從'行'標籤之間拉出文本?我已經在'stacktrace/line'上匹配了,沒有使用子元素 - 那麼我可以使用什麼樣的模式?

放置它的另一種方式 - 'StackLine'對象正在創建並正確關聯 - 它只是我不知道該怎麼調用我的'setName()'setter?

(在XSLT一個一般會使用或目前的()「中,例如類似的情況「」)

回答

0

明白了:顯然是一個空的模式字符串將匹配當前節點的文本:

這工作對我來說:

<bean-property-setter-rule pattern="" propertyname="line"/>