Heim >Backend-Entwicklung >XML/RSS-Tutorial >Ein leistungsstarkes Tool zum Konvertieren von JAVAbean und XML – Detaillierte Code-Erklärung von XStream

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

黄舟
黄舟Original
2017-03-31 14:01:491678Durchsuche

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

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;  
    }  
}

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!

Stellungnahme:
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