2012-09-14 8 views
5

Ich mag Marshalling eine XML in folgendem FormatXstream, wie ein Feld mit bestimmtem Wert zu vermeiden, während

<parm-list> 
<param> 
<NAME>somename</NAME> 
<VALUE>somevalue</VALUE> 
</param> 
<param> 
<NAME>somename</NAME> 
<VALUE>somevalue</VALUE> 
</param> 
<param> 
<NAME>somename</NAME> 
<VALUE>somevalue</VALUE> 
</param> 
<param> 
<NAME>somename</NAME> 
<VALUE>somevalue</VALUE> 
</param> 
</param-list> 

Was kann ich tun, um zu erstellen, wenn ich mit spezifischen <NAME> darin kein <PARAM> Feld will?

Antwort

1

Obwohl ich glaube wirklich nicht, dass Xstream wirklich für die Aufgabe geeignet ist, scheint es möglich zu sein.

Sie könnten Ihren eigenen Konverter ähnlich one of those implementieren. Wenn Sie sich die Schnittstelle Converter ansehen, werden Sie sehen, dass Sie ein Element leicht überspringen können, indem Sie nichts an HierarchicalStreamWriter schreiben.

public class ParamConverter implements Converter{ 

    boolean canConvert(Class type){ 
     return Param.class.equals(type); 
    } 

    public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context){ 
     Param param = (Param)source; 
     if (NAME_TO_SKIP.equals(param.getName()){ 
      return; 
     } 
     // delegate to ReflectionConverter or something else appropriate. 
    } 
} 

Um den Konverter zu registrieren, rufen Sie einfach xStram.registerConverter(new ParamConverter()); an.

Für weitere Informationen lesen Sie bitte this tutorial auf Konverter.

Verwandte Themen