


Introduction détaillée à la sérialisation XML et à la désérialisation des objets Java
Cet article présente principalement l'exemple d'analyse de sérialisation et de désérialisation XML d'objets Java. L'éditeur pense que c'est assez bon, je vais donc le partager avec vous ici.
Dans l'article précédent, nous avons présenté des exemples de code de divers algorithmes de tri implémentés en Java. Dans cet article, nous examinons le contenu pertinent de la sérialisation XML et de la désérialisation des objets Java, comme suit.
XML est une spécification standard d'échange de données qui peut être facilement utilisée pour échanger différents types de données entre applications. Si un certain mappage peut être établi entre les objets Java et les documents XML, comme la sérialisation XML et la désérialisation des objets Java, alors les objets Java peuvent être facilement échangés avec d'autres applications.
Il existe deux classes XMLEncoder et Decoder dans le package java.beans, qui sont utilisées pour sérialiser et désérialiser les objets Java conformes à la spécification JabaBeans en XML. Le code suivant montre comment implémenter le codage et le décodage XML d'objets Java à l'aide de ces deux classes.
Classe Java à sérialiser :
import java.io.Serializable; public class SerialableObject implements Serializable { private static final long serialVersionUID = 8745578444312339136L; public SerialableObject() { } public SerialableObject(int id, String name, double value) { this.id = id; this.name = name; this.value = value; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getValue() { return value; } public void setValue(double value) { this.value = value; } private int id; private String name; private double value; }
Classe de démonstration d'utilisation de la sérialisation et de la désérialisation XML :
import java.beans.XMLDecoder; import java.beans.XMLEncoder; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.List; import java.util.Vector; public class XmlSerialize { public XmlSerialize() { } public void serializeSingleObject(OutputStream os, Object obj) // 序列化单个java对象 { // XMLEncoder xe = new XMLEncoder(os); XMLEncoder xe = new XMLEncoder(os, "GBK", true, 0); // 仅用于Java SE 7 xe.writeObject(obj); // 序列化成XML字符串 xe.close(); } public Object deserializeSingleObject(InputStream is) // 反序列化单个Java对象 { XMLDecoder xd = new XMLDecoder(is); Object obj = xd.readObject(); // 从XML序列中解码为Java对象 xd.close(); return obj; } public void serializeMultipleObject(OutputStream os, List<Object> objs) // 序列化多个Java对象 { XMLEncoder xe = new XMLEncoder(os); xe.writeObject(objs); // 序列化成XML字符串 xe.close(); } public List<Object> deserializeMultipleObject(InputStream is) // 反序列化多个Java对象 { XMLDecoder xd = new XMLDecoder(is); @SuppressWarnings("unchecked") List<Object> objs = (List<Object>)xd.readObject(); // 从XML序列中解码为Java对象列表 xd.close(); return objs; } public void runSingleObject() { File xmlFile = new File("object.xml"); SerialableObject jo4Out = new SerialableObject(1, "Java序列化为XML", 3.14159265359); // 创建待序列化的对象 try { FileOutputStream ofs = new FileOutputStream(xmlFile); // 创建文件输出流对象 serializeSingleObject(ofs, jo4Out); ofs.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { FileInputStream ifs = new FileInputStream(xmlFile); SerialableObject jo4In = (SerialableObject)deserializeSingleObject(ifs); System.out.println("id: " + jo4In.getId()); System.out.println("name: " + jo4In.getName()); System.out.println("value: " + jo4In.getValue()); } catch (FileNotFoundException e) { e.printStackTrace(); } } public void runMultipleObject() { File xmlFile = new File("objects.xml"); List<SerialableObject> sos4Out = new Vector<SerialableObject>(); sos4Out.add(new SerialableObject(1, "Java序列化为XML - 1", 3.14)); // 创建待序列化的对象 sos4Out.add(new SerialableObject(2, "Java序列化为XML - 2", 3.14159)); // 创建待序列化的对象 sos4Out.add(new SerialableObject(3, "Java序列化为XML - 3", 3.1415926)); // 创建待序列化的对象 sos4Out.add(new SerialableObject(4, "Java序列化为XML - 4", 3.141592653)); // 创建待序列化的对象 sos4Out.add(new SerialableObject(5, "Java序列化为XML - 5", 3.14159265359)); // 创建待序列化的对象 try { FileOutputStream ofs = new FileOutputStream(xmlFile); // 创建文件输出流对象 serializeSingleObject(ofs, sos4Out); ofs.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { FileInputStream ifs = new FileInputStream(xmlFile); @SuppressWarnings("unchecked") List<SerialableObject> sos4In = (List<SerialableObject>)deserializeSingleObject(ifs); for (SerialableObject jo4In : sos4In) { System.out.println("id: " + jo4In.getId()); System.out.println("name: " + jo4In.getName()); System.out.println("value: " + jo4In.getValue()); } } catch (FileNotFoundException e) { e.printStackTrace(); } } public static void main(String[] args) { XmlSerialize xs = new XmlSerialize(); xs.runSingleObject(); xs.runMultipleObject(); } }
Il est à noter que la classe à sérialiser doit être conforme à la spécification du format JavaBeans, c'est-à-dire : elle a un constructeur public sans paramètres, et toutes les données membres sont accessible en mode getter/setter. De plus, cette classe doit être publique et implémenter l'interface java.io.Seriallessly.
Une fois le programme exécuté, deux fichiers seront générés :
object.xml est généré par la méthode runSingleObject et stocke la valeur de un seul SerialableObject :
<?xml version="1.0" encoding="GBK"?> <java version="1.7.0" class="java.beans.XMLDecoder"> <object class="SerialableObject"> <void property="id"> <int>1</int> </void> <void property="name"> <string>Java序列化为XML</string> </void> <void property="value"> <double>3.14159265359</double> </void> </object> </java>
objects.xml est généré par la méthode runMultipleObject et stocke les valeurs de 5 SeriallesslyObjects :
<?xml version="1.0" encoding="GBK"?> <java version="1.7.0" class="java.beans.XMLDecoder"> <object class="java.util.Vector"> <void method="add"> <object class="SerialableObject"> <void property="id"> <int>1</int> </void> <void property="name"> <string>Java序列化为XML - 1</string> </void> <void property="value"> <double>3.14</double> </void> </object> </void> <void method="add"> <object class="SerialableObject"> <void property="id"> <int>2</int> </void> <void property="name"> <string>Java序列化为XML - 2</string> </void> <void property="value"> <double>3.14159</double> </void> </object> </void> <void method="add"> <object class="SerialableObject"> <void property="id"> <int>3</int> </void> <void property="name"> <string>Java序列化为XML - 3</string> </void> <void property="value"> <double>3.1415926</double> </void> </object> </void> <void method="add"> <object class="SerialableObject"> <void property="id"> <int>4</int> </void> <void property="name"> <string>Java序列化为XML - 4</string> </void> <void property="value"> <double>3.141592653</double> </void> </object> </void> <void method="add"> <object class="SerialableObject"> <void property="id"> <int>5</int> </void> <void property="name"> <string>Java序列化为XML - 5</string> </void> <void property="value"> <double>3.14159265359</double> </void> </object> </void> </object> </java>
Résumé
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Guide de la racine carrée en Java. Nous discutons ici du fonctionnement de Square Root en Java avec un exemple et son implémentation de code respectivement.

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du numéro Armstrong en Java. Nous discutons ici d'une introduction au numéro d'Armstrong en Java ainsi que d'une partie du code.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est
