2013-05-21 2 views
0

xstream을 사용하여 XML을 구문 분석하고 모든 것이 잘 진행되는 동안 ... xstream이 처리 할 수없는 상황이 있습니다.XStream 요소에 TextNode 및 Element가 포함되어 있습니다.

""(이)라는 태그가 하나 있지만 다른 XML 파일에 텍스트 노드 또는 기타 XML 태그를 포함 할 수 있습니다. 그것은, 만에를 잘 작동

XML 파일 (1)의 경우
@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 File 1: 
<Spec> text Node Here </Spec> 

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

을 그리고 사양 클래스에서이 코드를 가지고 :

이 이렇게 될 수 있습니다 XML 파일 2의 경우 "tag1"및 "tag2"필드의 값은 null이고 필드의 값 "spec"은 다음과 같습니다 : "\ n \ t \ t"

이 두 가지를 처리하려면 어떻게해야합니까? 파일? 미리 감사드립니다.

답변

0

예이 문제를 해결했습니다 ... 하지만 좋은 방법은 아닙니다.

은 Spec 클래스를 텍스트 노드의 경우 , XML 요소의 경우 의 두 클래스로 나눕니다.

다른 xml 파일을 구문 분석하는 동안 xstream.alias ("Spec", Spec1.class)를 사용하여 ; 및 xstream.alias ("Spec", Spec2.class); 두 가지 다른 형식으로 전환하십시오.