Ein leistungsstarkes Tool zum Konvertieren von JAVAbean und XML – Detaillierte Code-Erklärung von XStream

黄舟
Freigeben: 2017-03-31 14:01:49
Original
1636 Leute haben es durchsucht

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;  
    }  
}
Nach dem Login kopieren

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));
Nach dem Login kopieren
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>
Nach dem Login kopieren

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;  
    }  
}
Nach dem Login kopieren

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));
Nach dem Login kopieren
Hier ist eine weitere Anmerkung: @XStreamAsAttribute, unsere JAVA-Bean sieht so aus:

<person>  
  <name>pli</name>  
  <age>18</age>  
</person>
Nach dem Login kopieren
Das Ergebnis sieht so aus:



4. Verarbeitungsliste

Was passiert, wenn in der JAVA-Bean eine Liste vorhanden ist.
@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;  
    }  
}
Nach dem Login kopieren

Bei der direkten Konvertierung erhalten wir dieses Ergebnis:
<person age="18">  
  <name>pli</name>  
</person>
Nach dem Login kopieren


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 -Tags und des Änderns von „“.

@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;  
    }  
}
Nach dem Login kopieren

Das Ergebnis sieht so aus:

<person age="18">  
  <name>pli</name>  
  <girlFriends>  
    <string>YuanYuanGao</string>  
    <string>QiShu</string>  
    <string>BoZhiZhang</string>  
  </girlFriends>  
</person>
Nach dem Login kopieren

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;  
    }  
}
Nach dem Login kopieren
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>
Nach dem Login kopieren


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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage