Rumah pembangunan bahagian belakang Tutorial XML/RSS java使用jaxb操作xml示例

java使用jaxb操作xml示例

Jan 11, 2017 pm 01:06 PM

首先定义两个示例类ClassA,ClassB,用于后续的示例演示

package cn.lzrabbit;
public class ClassA {
    private int classAId;
    private String classAName;
    private ClassB classB;
    public int getClassAId() {
        return classAId;
    }
    public void setClassAId(int classAId) {
        this.classAId = classAId;
    }
    public String getClassAName() {
        return classAName;
    }
    public void setClassAName(String classAName) {
        this.classAName = classAName;
    }
    public ClassB getClassB() {
        return classB;
    }
    public void setClassB(ClassB classB) {
        this.classB = classB;
    }
}
ClassA
Salin selepas log masuk
package cn.lzrabbit;
public class ClassB {
    private int classBId;
    private String classBName;
    public int getClassBId() {
        return classBId;
    }
    public void setClassBId(int classBId) {
        this.classBId = classBId;
    }
    public String getClassBName() {
        return classBName;
    }
    public void setClassBName(String classBName) {
        this.classBName = classBName;
    }
}
ClassB
Salin selepas log masuk

用于序列化的XmlUtil

package cn.lzrabbit;
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.bind.*;
public class XmlUtil {
    public static String toXML(Object obj) {
        try {
            JAXBContext context = JAXBContext.newInstance(obj.getClass());
            Marshaller marshaller = context.createMarshaller();
            marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");// //编码格式
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);// 是否格式化生成的xml串
            marshaller.setProperty(Marshaller.JAXB_FRAGMENT, false);// 是否省略xm头声明信息
            StringWriter writer = new StringWriter();
            marshaller.marshal(obj, writer);
            return writer.toString();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    @SuppressWarnings("unchecked")
    public static <T> T fromXML(String xml, Class<T> valueType) {
        try {
            JAXBContext context = JAXBContext.newInstance(valueType);
            Unmarshaller unmarshaller = context.createUnmarshaller();
            return (T) unmarshaller.unmarshal(new StringReader(xml));
        } catch (Exception e) {
            throw new RuntimeException(e.getMessage());
        }
    }
}
XmlUtil
Salin selepas log masuk

调用如下:

package cn.lzrabbit;

public class MainRun {
    /**
     * @param args
     */
    public static void main(String[] args) {
        ClassB classB = new ClassB();
        classB.setClassBId(22);
        classB.setClassBName("B2");
        ClassA classA = new ClassA();
        classA.setClassAId(11);
        classA.setClassAName("A1");
        classA.setClassB(classB);
        System.out.println(XmlUtil.toXML(classA));
    }
}
MainRun
Salin selepas log masuk

输出结果如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<classA>
    <classAId>11</classAId>
    <classAName>A1</classAName>
    <classB>
        <classBId>22</classBId>
        <classBName>B2</classBName>
    </classB>
</classA>
Salin selepas log masuk

这里要注意以下几点

1要序列化的类加上 @XmlRootElement注解,否则会报错(错误提示很清晰,这里就不贴出来了)

2JAXB序列化XML时 默认序列化getter和setter,且getter和setter必须成对出现才会被序列化

3属性名称,默认序列化出来的类和属性名称默认是首字母转换为小写,若需要控制属性名称需要在getter或setter上使用 @XmlElement(name="ClassAId") 指定名称,这里要注意的是@XmlElement放置在getter或setter上都行,但只能放一个,也就是说不能同时在getter和setter上使用@XmlElement注解

4如何控制根节点名称?
使用@XmlRootElement指定name属性即可,如@XmlRootElement(name="ClassA")

5怎么添加命名空间
使用@XmlRootElement(namespace="cn.lzrabbit") 指定namespace属性

6怎么精确控制每个属性名称
JAXB自动转化为首字母小写会导致不可预料的属性名称出现, 不嫌麻烦的话为每个属性设置@XmlElement(name=""),想省事的话使用Field

7怎么样实现序列化时使用Field字段而不是使用setter和getter
在要使用的类上面加上@XmlAccessorType(XmlAccessType.FIELD)注解,并指定为XmlAccessType.FIELD,这里强烈推荐使用@XmlAccessorType(XmlAccessType.FIELD)注解,因为这样你可以精确的控制每个元素的名称,而不需要为每个属性去设置@XmlElement(name="")注解,当然也可以在Field上使用@XmlElement注解

下面给出使用了使用如上注解后的代码示例

@XmlRootElement(namespace="cn.lzrabbit")
@XmlAccessorType(XmlAccessType.FIELD)
public class ClassA {
    private int classAId;
    
    @XmlElement(name="ClassAName")
    private String classAName;
    private ClassB classB;
    public int getClassAId() {
        return classAId;
    }
    public void setClassAId(int classAId) {
        this.classAId = classAId;
    }
    public String getClassAName() {
        return classAName;
    }
    public void setClassAName(String classAName) {
        this.classAName = classAName;
    }
    public ClassB getClassB() {
        return classB;
    }
    public void setClassB(ClassB classB) {
        this.classB = classB;
    }
}
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class ClassB {
    private int ClassBId;
    private String ClassBName;
    public int getClassBId() {
        return ClassBId;
    }
    public void setClassBId(int classBId) {
        this.ClassBId = classBId;
    }
    public String getClassBName() {
        return ClassBName;
    }
    public void setClassBName(String classBName) {
        this.ClassBName = classBName;
    }
}
Salin selepas log masuk

输出xml为

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:classA xmlns:ns2="cn.lzrabbit">
    <classAId>11</classAId>
    <ClassAName>A1</ClassAName>
    <classB>
        <ClassBId>22</ClassBId>
        <ClassBName>B2</ClassBName>
    </classB>
</ns2:classA>
Salin selepas log masuk

更多java使用jaxb操作xml示例相关文章请关注PHP中文网!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Adakah kelajuan penukaran cepat apabila menukar XML ke PDF pada telefon bimbit? Adakah kelajuan penukaran cepat apabila menukar XML ke PDF pada telefon bimbit? Apr 02, 2025 pm 10:09 PM

Kelajuan XML mudah alih ke PDF bergantung kepada faktor -faktor berikut: kerumitan struktur XML. Kaedah Penukaran Konfigurasi Perkakasan Mudah Alih (Perpustakaan, Algoritma) Kaedah Pengoptimuman Kualiti Kod (Pilih perpustakaan yang cekap, mengoptimumkan algoritma, data cache, dan menggunakan pelbagai threading). Secara keseluruhannya, tidak ada jawapan mutlak dan ia perlu dioptimumkan mengikut keadaan tertentu.

Bagaimana cara menukar fail XML ke PDF di telefon anda? Bagaimana cara menukar fail XML ke PDF di telefon anda? Apr 02, 2025 pm 10:12 PM

Tidak mustahil untuk menyelesaikan penukaran XML ke PDF secara langsung di telefon anda dengan satu aplikasi. Ia perlu menggunakan perkhidmatan awan, yang boleh dicapai melalui dua langkah: 1. Tukar XML ke PDF di awan, 2. Akses atau muat turun fail PDF yang ditukar pada telefon bimbit.

Bagaimana cara menukar XML ke PDF di telefon anda? Bagaimana cara menukar XML ke PDF di telefon anda? Apr 02, 2025 pm 10:18 PM

Ia tidak mudah untuk menukar XML ke PDF secara langsung pada telefon anda, tetapi ia boleh dicapai dengan bantuan perkhidmatan awan. Adalah disyorkan untuk menggunakan aplikasi mudah alih ringan untuk memuat naik fail XML dan menerima PDF yang dihasilkan, dan menukarnya dengan API awan. API awan menggunakan perkhidmatan pengkomputeran tanpa pelayan, dan memilih platform yang betul adalah penting. Kerumitan, pengendalian kesilapan, keselamatan, dan strategi pengoptimuman perlu dipertimbangkan ketika mengendalikan penjanaan XML dan penjanaan PDF. Seluruh proses memerlukan aplikasi front-end dan API back-end untuk bekerjasama, dan ia memerlukan pemahaman tentang pelbagai teknologi.

Alat pemformatan XML yang disyorkan Alat pemformatan XML yang disyorkan Apr 02, 2025 pm 09:03 PM

Alat pemformatan XML boleh menaip kod mengikut peraturan untuk meningkatkan kebolehbacaan dan pemahaman. Apabila memilih alat, perhatikan keupayaan penyesuaian, pengendalian keadaan khas, prestasi dan kemudahan penggunaan. Jenis alat yang biasa digunakan termasuk alat dalam talian, pemalam IDE, dan alat baris arahan.

Adakah terdapat aplikasi mudah alih yang boleh menukar XML ke PDF? Adakah terdapat aplikasi mudah alih yang boleh menukar XML ke PDF? Apr 02, 2025 pm 08:54 PM

Permohonan yang menukarkan XML terus ke PDF tidak dapat dijumpai kerana mereka adalah dua format yang berbeza. XML digunakan untuk menyimpan data, manakala PDF digunakan untuk memaparkan dokumen. Untuk melengkapkan transformasi, anda boleh menggunakan bahasa pengaturcaraan dan perpustakaan seperti Python dan ReportLab untuk menghuraikan data XML dan menghasilkan dokumen PDF.

Cara Membuka Format XML Cara Membuka Format XML Apr 02, 2025 pm 09:00 PM

Gunakan kebanyakan editor teks untuk membuka fail XML; Jika anda memerlukan paparan pokok yang lebih intuitif, anda boleh menggunakan editor XML, seperti editor XML oksigen atau XMLSPY; Jika anda memproses data XML dalam program, anda perlu menggunakan bahasa pengaturcaraan (seperti Python) dan perpustakaan XML (seperti XML.Etree.ElementTree) untuk menghuraikan.

Cara Membuka Web.xml Cara Membuka Web.xml Apr 03, 2025 am 06:51 AM

Untuk membuka fail web.xml, anda boleh menggunakan kaedah berikut: Gunakan editor teks (seperti Notepad atau TextEdit) untuk mengedit arahan menggunakan persekitaran pembangunan bersepadu (seperti Eclipse atau NetBeans) (Windows: Notepad Web.xml; Mac/Linux: Open -A -A TextEdit Web.xml)

Bagaimana cara menukar XML ke PDF di telefon anda dengan kualiti tinggi? Bagaimana cara menukar XML ke PDF di telefon anda dengan kualiti tinggi? Apr 02, 2025 pm 09:48 PM

Tukar XML ke PDF dengan kualiti tinggi pada telefon bimbit anda memerlukan: Parsing XML di awan dan menjana PDF menggunakan platform pengkomputeran tanpa pelayan. Pilih Parser XML yang cekap dan perpustakaan penjanaan PDF. Mengendalikan kesilapan dengan betul. Menggunakan sepenuhnya kuasa pengkomputeran awan untuk mengelakkan tugas berat pada telefon anda. Laraskan kerumitan mengikut keperluan, termasuk memproses struktur XML kompleks, menghasilkan PDF multi-halaman, dan menambah imej. Cetak maklumat log untuk membantu debug. Mengoptimumkan prestasi, pilih parser yang cekap dan perpustakaan PDF, dan boleh menggunakan pengaturcaraan asynchronous atau data XML preprocessing. Memastikan kualiti kod yang baik dan penyelenggaraan.

See all articles