0

我正在尝试使用 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()')

4

1 回答 1

0

明白了:显然空模式字符串将匹配当前节点的文本:

这对我有用:

<bean-property-setter-rule pattern="" propertyname="line"/>
于 2011-10-16T14:21:58.923 回答