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>
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>
사용하려는 경우 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>
@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=***) 주석을 제공합니다. 그리고 우리의 예에 따라 목록 이름을 변경하려면 @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>
직렬화하지 않으려는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!