Heim >Backend-Entwicklung >XML/RSS-Tutorial >Ein leistungsstarkes Tool zum Konvertieren von JAVAbean und XML – Detaillierte Code-Erklärung von XStream
XStream ist ein Open-Source-Projekt, dessen Hauptfunktion die Konvertierung zwischen Java-Beans und XML-Text ist. Es stellt auch JAVA-Beans und bereit Die Konvertierung zwischen JSON liegt außerhalb des Rahmens dieser Diskussion.
XSteam unterstützt auch Annotationen nach JAVA1.5. Zu diesem Zeitpunkt müssen Sie der JAVA-Bean nur einige Anmerkungen hinzufügen. Wenn die JAVA-Bean nicht geändert werden darf, bietet XStream natürlich auch eine Registermethode, die ebenfalls sehr einfach ist. Lassen Sie uns anhand mehrerer Aspekte erklären:
Grundlegende Konvertierung
3. Verarbeitung
ListeTypattribut; 5. Attribute nehmen nicht an der Konvertierung teil.
Dies ist eine gewöhnliche JAVA-Bean:
Der Konvertierungscode lautet folgt:
Wir haben dieses Ergebnis erhalten:
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; } }
Aber manchmal möchte das Root-Tag den Paketpfad nicht verwenden. Wie geht das? Verwenden Sie einen Alias
XStream xstream = new XStream(); Person person = new Person(); person.setName("pli"); person.setAge(18); System.out.println(xstream.toXML(person));2. Alias
Jia Ding Wir hoffen, das unerklärliche Element-Tag „xstreamTest.Person“ in „person“ ändern zu können.
<xstreamTest.Person> <name>pli</name> <age>18</age> </xstreamTest.Person>
Der Ausführungscode sieht so aus:
Wir bekommen also, was wir wollen:
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; } }
3 Verarbeitungsattribute
Was sollten Sie dies tun, wenn Sie das „Alter“-Attribut in der JAVA-Bean als Attribut des Personen-Tags in XML verwenden möchten.XStream xstream = new XStream(); xstream.autodetectAnnotations(true); Person person = new Person(); person.setName("pli"); person.setAge(18); System.out.println(xstream.toXML(person));Hier ist eine weitere Anmerkung: @XStreamAsAttribute, unsere JAVA-Bean sieht so aus:
<person> <name>pli</name> <age>18</age> </person>Das Ergebnis sieht so aus:
4. Verarbeitungsliste
@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; } }Bei der direkten Konvertierung erhalten wir dieses Ergebnis:
<person age="18"> <name>pli</name> </person>
XStream stellt hier eine @XStreamImplicit(itemFieldName=***)-Annotation bereit, um den Benutzer zufrieden zu stellen, der List The konvertieren möchte Das Entfernen des Stammknotens und das Ändern des Listennamens entspricht unserem Beispiel des Entfernens des 4e4533e6d53566a86c3dd22301ca0fe8-Tags und des Änderns von „98c455a79ddfebb79781bff588e7b37e“.
@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; } }
Das Ergebnis sieht so aus:
<person age="18"> <name>pli</name> <girlFriends> <string>YuanYuanGao</string> <string>QiShu</string> <string>BoZhiZhang</string> </girlFriends> </person>
5. Attribute ignorieren
Wenn es einige Attribute in der JAVA-Bean gibt, die nicht serialisiert werden sollen, XStream stellt eine Anmerkung zur Lösung dieser Anforderung bereit: @XStreamOmitField@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; } }Zum Beispiel möchte ich nicht über die Serialisierung der Liste der Freundinnen sprechen
<person age="18"> <name>pli</name> <girl>YuanYuanGao</girl> <girl>QiShu</girl> <girl>BoZhiZhang</girl> </person>
Das obige ist der detaillierte Inhalt vonEin leistungsstarkes Tool zum Konvertieren von JAVAbean und XML – Detaillierte Code-Erklärung von XStream. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!