我正在尝试使用 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>
我如何从“行”标签之间拉出该文本?我已经在“stacktrace/line”上匹配,没有子元素可以使用 - 那么我可以使用什么模式?
另一种说法 - 'StackLine' 对象正在创建并正确关联 - 只是我不知道用什么来调用我的 'setName()' 设置器?
(例如,在 XSLT 中,通常会在类似的场景中使用 '.' 或 'current()')