>백엔드 개발 >XML/RSS 튜토리얼 >JAVAbean 및 XML 변환을 위한 강력한 도구 - XStream의 자세한 코드 설명

JAVAbean 및 XML 변환을 위한 강력한 도구 - XStream의 자세한 코드 설명

黄舟
黄舟원래의
2017-03-31 14:01:491676검색

XStream은 유명한 생각의 오픈 소스 프로젝트입니다. 주요 기능은 Java Bean과 XML 텍스트 간의 변환을 제공하는 것입니다. 또한 JAVA Bean과 도 제공합니다. JSON 간의 변환은 이 논의 범위를 벗어납니다.
XSteam은 JAVA1.5 이후에도 주석을 지원합니다. 이때 JAVA BEAN에 몇 가지 주석만 추가하면 됩니다. 물론 JAVA Bean 수정이 허용되지 않는 경우 XStream은 매우 간단한 등록 방법도 제공합니다. 여러 측면에서 자세히 설명하겠습니다.
2. 별칭 사용
속성
>유형 속성; 5. 속성은 변환에 참여하지 않습니다.
1. 기본 변환 일반 JAVA Bean입니다.

package xstreamTest;  
public class Person {  
    private String name;  
    private int age;  
  
    public int getAge() {  
        return age;  
    }  
  
    public void setAge(int age) {  
        this.age = age;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
  
    public String getName() {  
        return this.name;  
    }  
}

변환 코드는 다음과 같습니다.
XStream xstream = new XStream();  
Person person = new Person();  
person.setName("pli");  
person.setAge(18);  
System.out.println(xstream.toXML(person));

다음 결과를 얻었습니다:
<xstreamTest.Person>  
  <name>pli</name>  
  <age>18</age>  
</xstreamTest.Person>

그러나 때때로 루트 태그가 패키지 경로를 사용하고 싶지 않을 경우 이를 수행하는 방법은 별칭을 사용하십시오

2. 별칭

Jia Ding us 설명할 수 없는 요소 태그 "xstreamTest.Person"을 "person"으로 변경하려고 합니다.

package xstreamTest;  
@XStreamAlias("person")  
public class Person {  
    private String name;  
    private int age;  
  
    public int getAge() {  
        return age;  
    }  
  
    public void setAge(int age) {  
        this.age = age;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
  
    public String getName() {  
        return this.name;  
    }  
}

실행 코드는 다음과 같습니다:

XStream xstream = new XStream();  
xstream.autodetectAnnotations(true);  
Person person = new Person();  
person.setName("pli");  
person.setAge(18);  
System.out.println(xstream.toXML(person));

이런 방식으로 우리가 원하는 것을 얻습니다:

<person>  
  <name>pli</name>  
  <age>18</age>  
</person>

3. 처리 속성

사용하려는 경우 JAVA Bean의 "age" 속성이 XML의 person 태그 속성으로 사용되는 경우 어떻게 해야 합니까?

또 다른 주석은 @XStreamAsAttribute입니다. JAVA bean은 다음과 같습니다.

@XStreamAlias("person")  
public class Person {  
    private String name;  
    @XStreamAsAttribute  
    private int age;  
      
    public int getAge() {  
        return age;  
    }  
  
    public void setAge(int age) {  
        this.age = age;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
  
    public String getName() {  
        return this.name;  
    }  
}

결과는 다음과 같습니다.

<person age="18">  
  <name>pli</name>  
</person>

4. 처리 목록
JAVA bean이란 무엇입니까? 에 List가 있을 때의 상황.

@XStreamAlias("person")  
public class Person {  
    private String name;  
    @XStreamAsAttribute  
    private int age;  
      
    List<String> girlFriends;  
      
    public List<String> getGirlFriends() {  
        return girlFriends;  
    }  
  
    public void setGirlFriends(List<String> girlFriends) {  
        this.girlFriends = girlFriends;  
    }  
  
    public int getAge() {  
        return age;  
    }  
  
    public void setAge(int age) {  
        this.age = age;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
  
    public String getName() {  
        return this.name;  
    }  
}

직접 변환하면 다음 결과를 얻을 수 있습니다.

<person age="18">  
  <name>pli</name>  
  <girlFriends>  
    <string>YuanYuanGao</string>  
    <string>QiShu</string>  
    <string>BoZhiZhang</string>  
  </girlFriends>  
</person>

XStream은 목록의 루트 노드를 제거하려는 사용자를 만족시키기 위해 여기에서 @XStreamImplicit(itemFieldName=***) 주석을 제공합니다. 그리고 우리의 예에 따라 목록 이름을 변경하려면 4e4533e6d53566a86c3dd22301ca0fe8 태그를 제거하고 "98c455a79ddfebb79781bff588e7b37e"을 변경해야 합니다.

@XStreamAlias("person")  
public class Person {  
    private String name;  
    @XStreamAsAttribute  
    private int age;  
    @XStreamImplicit(itemFieldName="girl")  
    List<String> girlFriends;  
      
    public List<String> getGirlFriends() {  
        return girlFriends;  
    }  
  
    public void setGirlFriends(List<String> girlFriends) {  
        this.girlFriends = girlFriends;  
    }  
  
    public int getAge() {  
        return age;  
    }  
  
    public void setAge(int age) {  
        this.age = age;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
  
    public String getName() {  
        return this.name;  
    }  
}

결과는 다음과 같습니다.

<person age="18">  
  <name>pli</name>  
  <girl>YuanYuanGao</girl>  
  <girl>QiShu</girl>  
  <girl>BoZhiZhang</girl>  
</person>

5. 속성 무시

직렬화하지 않으려는 JAVA Bean의 속성이 있는 경우 XStream은 주석을 제공합니다. 이 요구 사항을 해결하세요: @XStreamOmitField

예를 들어 여자 친구 목록의 직렬화에 대해 이야기하고 싶지 않습니다.

@XStreamAlias("person")  
public class Person {  
    private String name;  
    @XStreamAsAttribute  
    private int age;  
    @XStreamImplicit(itemFieldName="girl")  
    @XStreamOmitField  
    List<String> girlFriends;  
      
    public List<String> getGirlFriends() {  
        return girlFriends;  
    }  
  
    public void setGirlFriends(List<String> girlFriends) {  
        this.girlFriends = girlFriends;  
    }  
  
    public int getAge() {  
        return age;  
    }  
  
    public void setAge(int age) {  
        this.age = age;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
  
    public String getName() {  
        return this.name;  
    }  
}


위 내용은 JAVAbean 및 XML 변환을 위한 강력한 도구 - XStream의 자세한 코드 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.