이 글에서는 주로 Javabean을 사용하여 xstream 패키지를 기반으로 XML 문서를 변환하는 방법을 소개합니다. 구체적인 예를 기반으로 xml 파일을 변환하기 위한 xstream 패키지의 구체적인 사용 기술을 분석합니다.
이 기사의 예제에서는 Javabean이 xstream 패키지를 기반으로 XML 문서를 변환하는 방법을 구현하는 방법을 설명합니다. 참고용으로 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.
1. 필수 Jar 패키지:
xpp3_min.jar
xstream.jar
이 사이트다운로드 주소.
이 두 개의 jar를 프로젝트에 추가합니다
2. 테스트를 위해 두 개의 javabeans를 추가합니다. Province 및 City
class Province { private String name;// 省名 private List<City> cities = new ArrayList<City>(); public String getName() { return name; } public void setName(String name) { this.name = name; } public List<City> getCities() { return cities; } public void setCities(List<City> cities) { this.cities = cities; } public void addCity(City city) { cities.add(city); } } class City { private String name;// 市名 private String description;// 描述 private String[] counties; // 该市的所有县 public String getName() { return name; } public void setName(String name) { this.name = name; } public String[] getCounties() { return this.counties; } public void setCounties(String[] countries) { this.counties = countries; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } @Override public String toString() { return "City [name=" + name + ", description=" + description + "]"; } public City() { super(); } public City(String name, String description) { super(); this.name = name; this.description = description; } }
XStream은 생성된 xml 문서를 변환하기 위해 toXML(Object obj) 메서드를 제공합니다. string로 반환됩니다. .
XStream#alias() 메서드는 생성된 요소의 태그 이름을 변경할 수 있습니다. 태그 이름이 설정되지 않은 경우 Java.lang.String과 같이 클래스의 문자열 형식이 태그 이름으로 사용됩니다.
XStream#useAttributeFor() 메소드는 Javabean의 attributes를 xml 요소의 속성으로 변환할 수 있습니다.
XStream#addImplicitCollection() 메서드는 다른 요소를 이러한 하위 요소의 상위 요소로 생성하지 않고도 List와 같은 Javabean 컬렉션 요소의 각 요소를 직접 하위 요소로 변환할 수 있습니다.
XStream#addImplicitArray() 메서드는 컬렉션이 배열이 된다는 점을 제외하면 addImplicitCollection()과 동일합니다.
다음은 테스트 코드입니다:
package com.song.demo; import java.util.ArrayList; import java.util.List; import com.thoughtworks.xstream.XStream; public class BeanToXml { public static void main(String[] args) { // 创建一个JavaBean List<Province> proList = new ArrayList<Province>(); // 广东省 Province gdProvince = new Province(); gdProvince.setName("广东省"); City gzCity = new City("广州市", "广东省省会"); gzCity.setCounties(new String[]{"海珠区", "天河区", "白云区"}); gdProvince.addCity(gzCity); gdProvince.addCity(new City("韶关", "粤北城市")); // 北京市 Province bjProvince = new Province(); bjProvince.setName("北京市"); bjProvince.addCity(new City("东城区", "北京市东城区")); bjProvince.addCity(new City("西城区", "北京市西城区")); proList.add(gdProvince); proList.add(bjProvince); // 使用默认的方式生成xml // System.out.println(toXML1(proList)); // 处理JavaBean中的集合属性,直接生成子节点 System.out.println(toXml2(proList)); } private static String toXml2(Object obj) { XStream stream = new XStream(); // 更改List类型的元素的显示名称 stream.alias("中国", List.class); stream.alias("省份", Province.class); stream.alias("城市", City.class); stream.alias("区-县", String.class); // 把Province类中的name属性生成为元素的属性 stream.useAttributeFor(Province.class, "name"); // 把JavaBean中的集合元素直接变成子节点,面不另外再生成一个节点,该节点包含所有的子节点: // 如: /* * <cities> * <city /> * <city /> * </cities> * * 转换成: * <city /> * <city /> */ // 集合类型:cities为List类型 stream.addImplicitCollection(Province.class, "cities"); // 数组类型:counties为String[] 类型 stream.addImplicitArray(City.class, "counties"); return stream.toXML(obj); } }
테스트 결과:
<中国> <省份 name="广东省"> <城市> <name>广州市</name> <description>广东省省会</description> <区-县>海珠区</区-县> <区-县>天河区</区-县> <区-县>白云区</区-县> </城市> <城市> <name>韶关</name> <description>粤北城市</description> </城市> </省份> <省份 name="北京市"> <城市> <name>东城区</name> <description>北京市东城区</description> </城市> <城市> <name>西城区</name> <description>北京市西城区</description> </城市> </省份> </中国>
위 내용은 xstream 패키지를 기반으로 Javabean으로 구현한 XML 문서 변환 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!