我正在尝试使用Apache Digester(V3)来处理包含“线程转储”的XML文件:所以文件包含许多线程转储,一个线程转储包含许多线程,一个线程包含一个堆栈跟踪,它由许多行组成
像这样:(简化)
<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()'setter?
(在XSLT中,例如,在类似场景中通常使用'。'或'current()')
答案 0 :(得分:0)
得到它:显然空模式字符串将匹配当前节点的文本:
这对我有用:
<bean-property-setter-rule pattern="" propertyname="line"/>