Problemas al utilizar el digestor común para analizar la salida XML de subversión

El resultado formateado de Subversion XML es una combinación de attributes y elementos, particularmente dentro del elemento <path> , vea el ejemplo a continuación:

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

Intento usar el digestor común para analizar el contenido del logging en dos POJO's diferentes (LogEntry y Path) usando lo siguiente:

 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"); 

(note addPath agrega el object de ruta que se está creando en una ArrayList<Path> dentro del object LogEntry creado)

No puedo entender por qué la class Path no está siendo completada. En base al XML, puedo entender por qué los copyfrom-rev y copyfrom-path no se pueden copyr (debido al guión) en los attributes copyFromRev correspondientes.

Pero no veo ninguna razón por la cual el atributo kind no esté siendo establecido dentro de la ruta.

¿Alguien tiene alguna idea?

Necesito usar una llamada digester.addSetProperties() para get los copyfrom-path y copyfrom-rev poblados:

 digester.addSetProperties("*/logentry/paths/path", "copyfrom-path", "copyfrompath"); digester.addSetProperties("*/logentry/paths/path", "copyfrom-rev", "copyfromrev"); 

Sin embargo, por alguna razón, el atributo kind todavía no se está rellenando.

Intereting Posts