【发布时间】:2013-10-07 16:00:28
【问题描述】:
Subversion XML 格式的输出是属性和元素的组合 - 特别是在 <path> 元素中 - 请参见下面的示例:
<?xml version="1.0" encoding="UTF-8"?>
<log>
<logentry
revision="29">
<author>bob</author>
<date>2013-02-14T17:21:42.848605Z</date>
<paths>
<path
action="A"
kind="dir"
copyfrom-path="/trunk"
copyfrom-rev="28">/tags/TAG-0.1</path>
</paths>
<msg>Creating tag TAG-0.1</msg>
</logentry>
</log>
我正在尝试使用 commons digester 将日志内容解析为两个不同的 POJO(LogEntry 和 Path),使用以下内容:
ArrayList<LogEntry> logEntries = new ArrayList<LogEntry>();
digester.push(logEntries);
digester.addObjectCreate("*/logentry", LogEntry.class);
digester.addSetProperties("*/logentry");
digester.addBeanPropertySetter("*/logentry/author");
digester.addBeanPropertySetter("*/logentry/date");
digester.addBeanPropertySetter("*/logentry/msg");
digester.addSetNext("*/logentry", "add");
digester.addObjectCreate("*/logentry/paths/path", Path.class);
digester.addSetProperties("*/logentry/paths/path");
digester.addBeanPropertySetter("*/logentry/paths/path", "value");
digester.addSetNext("*/logentry/paths/path", "addPath");
(注意 addPath 将正在创建的路径对象添加到创建的 LogEntry 对象内的ArrayList<Path>)
我无法弄清楚为什么 Path 类没有被完全填充。根据 XML,我可以理解为什么 copyfrom-rev 和 copyfrom-path 属性可能没有被复制(由于连字符)到相应的 copyFromRev 属性中。
但我看不出为什么没有在路径中设置 kind 属性。
有人有什么想法吗?
【问题讨论】:
标签: java xml svn apache-commons-digester