2013-05-21 3 views
0

Я использую xstream для анализа XML и все идет хорошо, пока .... есть ситуация, когда xstream, похоже, не справляется с этим.Элемент XStream содержит TextNode и Element

Существует один тег с именем "", но в другом XML-файле он может содержать текстовый узел или другой тег XML.

Это может быть так:

XML File 1: 
<Spec> text Node Here </Spec> 

XML File 2: 
<Spec Id="1"> 
    <Tag1>value</Tag1> 
    <Tag2>value</Tag2> 
</Spec> 

И В классе Spec, у меня есть этот код ...

@XStreamAlias("Spec") 
@XStreamConverter(value = ToAttributedValueConverter.class, strings = { "spec" }) //when Text Node 
public class Spec 
{ 
    String spec;  // text Node 

    @XStreamAlias("Id") 
    @XStreamAsAttribute 
    String id; 

    @XStreamAlias("Tag1") 
    String tag1; 

    @XStreamAlias("Tag2") 
    String tag2; 
    // getter and setter... 
} 

в случае XML-файла 1, он отлично работает, но в в случае XML-файла 2 значения полей «tag1» и «tag2» равны нулю, и значение поля «spec» равно: «\ n \ t \ t»

Что я могу сделать для обработки этих двух файлы? Спасибо заранее!

ответ

0

Да, я решил эту проблему ... , но не в хорошем смысле.

Разделить класс Spec на 2 класса: один для текстового узла, а другой для элементов xml.

и при анализе различного xml-файла с использованием xstream.alias («Spec», Spec1.class); и xstream.alias («Spec», Spec2.class); для переключения двух разных форматов.

Смежные вопросы