如何使用 JAXB 自定义 XML 导出

2023-12-13

出于测试目的,我使用 JAXB 从对象生成 XML。这工作正常。代码如下。

    package com.mns.mnsutilities.jaxb.model;

    import java.util.List;


    import javax.xml.bind.annotation.*;

    @XmlRootElement(name="Emp_MNS")
    @XmlType(propOrder= {"name", "age", "role", "gender", "addressesList"})
    public class Employee {
        private int id;
        private String gender;
        private int age;
        private String name;
        private String role;
        private String password;
        private List<Address> addressesList;

        public Employee() {}

        public Employee(int id, String gender, int age, String name, String role,
                String password) {
            super();
            this.id = id;
            this.gender = gender;
            this.age = age;
            this.name = name;
            this.role = role;
            this.password = password;
        }

        public Employee(int id, String gender, int age, String name, String role,
                String password, List<Address> addressesList) {
            super();
            this.id = id;
            this.gender = gender;
            this.age = age;
            this.name = name;
            this.role = role;
            this.password = password;
            this.addressesList = addressesList;
        }

        @XmlAttribute
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        @XmlElement(name = "gen")
        public String getGender() {
            return gender;
        }
        public void setGender(String gender) {
            this.gender = gender;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
       // @XmlNullPolicy(emptyNodeRepresentsNull = true, nullRepresentationForXml = XmlMarshalNullRepresentation.EMPTY_NODE)
        @XmlElement(nillable=true)
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getRole() {
            return role;
        }
        public void setRole(String role) {
            this.role = role;
        }
        @XmlTransient
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        @XmlElement(name = "addresses")
        public List<Address> getAddressesList() {
            return addressesList;
        }

        public void setAddressesList(List<Address> addressesList) {
            this.addressesList = addressesList;
        }

        @Override
        public String toString() {
            return "Employee [id=" + id + ", gender=" + gender + ", age=" + age
                    + ", name=" + name + ", role=" + role + ", password="
                    + password + ", addressesList=" + addressesList + "]";
        }
    }

And:

    package com.mns.mnsutilities.jaxb.model;

    import javax.xml.bind.annotation.XmlRootElement;


    @XmlRootElement(namespace="")
    public class Address {
        private String street;
        private String city;
        private String zipCode;
        private String country;

        public Address() {}

        public Address(String street, String city, String zipCode, String country) {
            super();
            this.street = street;
            this.city = city;
            this.zipCode = zipCode;
            this.country = country;
        }

        public String getStreet() {
            return street;
        }

        public void setStreet(String street) {
            this.street = street;
        }

        public String getCity() {
            return city;
        }

        public void setCity(String city) {
            this.city = city;
        }

        public String getZipCode() {
            return zipCode;
        }

        public void setZipCode(String zipCode) {
            this.zipCode = zipCode;
        }

        public String getCountry() {
            return country;
        }

        public void setCountry(String country) {
            this.country = country;
        }

        @Override
        public String toString() {
            return "Address [street=" + street + ", city=" + city + ", zipCode="
                    + zipCode + ", country=" + country + "]";
        }

    }

我的主要课程是:

    package com.mns.mnsutilities.jaxb.batch;

    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;

    import javax.xml.bind.JAXBContext;
    import javax.xml.bind.JAXBException;
    import javax.xml.bind.Marshaller;
    import javax.xml.bind.Unmarshaller;

    import com.mns.mnsutilities.jaxb.model.Address;
    import com.mns.mnsutilities.jaxb.model.Employee;

    public class LaunchAction {
        private static final String FILE_NAME = "output/CT3D_XML_SAMPLE_FINAL.xml";

        public static void main(String[] args) {
            Employee emp = new Employee();
            emp.setId(1);
            emp.setAge(25);
            emp.setName("Yovan");
            emp.setGender("Male");
            emp.setRole("Developer");
            emp.setPassword("sensitive");
            List<Address> addressesList = new ArrayList<>();
            Address address1 = new Address("Main Road", "Ebene", "11111", "Mauritius");
            Address address2 = new Address("Royal Road", "Rose-Hill", "2222", "Mauritius");
            addressesList.add(address1);
            addressesList.add(address2);
            emp.setAddressesList(addressesList);

            jaxbObjectToXML(emp);


            Employee empFromFile = jaxbXMLToObject();
            System.out.println(empFromFile.toString());
        }


        private static Employee jaxbXMLToObject() {
            try {
                JAXBContext context = JAXBContext.newInstance(Employee.class);
                Unmarshaller un = context.createUnmarshaller();
                Employee emp = (Employee) un.unmarshal(new File(FILE_NAME));
                return emp;
            } catch (JAXBException e) {
                e.printStackTrace();
            }
            return null;
        }


        private static void jaxbObjectToXML(Employee emp) {

            try {
                JAXBContext context = JAXBContext.newInstance(Employee.class);
                Marshaller m = context.createMarshaller();
                //for pretty-print XML in JAXB
                m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);

                // Write to System.out for debugging
                 m.marshal(emp, System.out);

                // Write to File
                m.marshal(emp, new File(FILE_NAME));
            } catch (JAXBException e) {
                e.printStackTrace();
            }
        }


    }

XML 输出为:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Emp_MNS id="1">
        <name xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true">
        </name>
        <age>25</age>
        <role>Developer</role>
        <gen>Juggoo</gen>
        <addresses>
            <city>Ebene</city>
            <country>Mauritius</country>
            <street>Main Road</street>
            <zipCode>11111</zipCode>
        </addresses>
        <addresses>
            <city>Rose-Hill</city>
            <country>Mauritius</country>
            <street>Royal Road</street>
            <zipCode>2222</zipCode>
        </addresses>
    </Emp_MNS>

我真正想要的是:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Emp_MNS id="1">
        <name xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true">
        </name>
        <age>25</age>
        <role>Developer</role>
        <gen>Juggoo</gen>
        <addresses>
            **<address>** 
                <city>Ebene</city>
                <country>Mauritius</country>
                <street>Main Road</street>
                <zipCode>11111</zipCode>
            **</address>** 
            **<address>**
                <city>Rose-Hill</city>
                <country>Mauritius</country>
                <street>Royal Road</street>
                <zipCode>2222</zipCode>
            **</address>**
        </addresses>
    </Emp_MNS>

您能指导我如何进行吗?


您可以执行以下操作:

@XmlElementWrapper(name="addresses")
@XmlElement(name="address")
public List<Address> getAddressesList() {
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 JAXB 自定义 XML 导出 的相关文章

  • 如何将列表转换为地图?

    最近我和一位同事讨论了转换的最佳方式是什么List to Map在 Java 中 这样做是否有任何具体的好处 我想知道最佳的转换方法 如果有人可以指导我 我将非常感激 这是个好方法吗 List
  • 使用 xuggle 将 mp3 转换为 wav 出现异常

    我正在尝试将 mp3 转换为 wav 代码在这里 String mp3 F work pic2talk38512 mp3 String wav F work pic2talk38512 wav TranscodeAudioAndVideo
  • 警告:跳过条目,因为它不是绝对 URI。 NetBeans 中的 GlassFish

    我成功安装了 GlassFish 但是 当我启动服务器时 我收到两条警告消息 警告 跳过条目 因为它不是绝对 URI 那是关于什么的 Launching GlassFish on Felix platform Aug 09 2014 10
  • 根据哈希值确认文件内容

    我需要 检查完整性 content文件数量 文件将写入 CD DVD 可能会被复制多次 这个想法是识别正确复制的副本 在从 Nero 等中删除它们之后 我对此很陌生 但快速搜索表明Arrays hashCode byte http down
  • Jodatime 日期格式

    是否可以格式化 JodaTime 日期 这是代码 private static LocalDate priorDay LocalDate date1 do date1 date1 plusDays 1 while date1 getDayO
  • Spring 术语中命令、表单、业务和实体对象之间的区别?

    我试图理解这些对象在松散耦合系统方面的差异 业务对象与实体对象相同吗 我可以使用 MVC 中的业务或实体对象作为我的命令对象吗 命令对象与表单对象相同吗 只是寻找 Spring 术语和用法中对象类型的说明 我在 stackoverflow
  • Java 反射:如何检索匿名内部类?

    我在另一个类中有一个匿名内部类 SomeClass Both SomeClass class getClasses and SomeClass class getDeclaredClasses 返回空数组 我在中找不到一些关于此的提示Cla
  • 将多个视频文件合并到一个文件中

    我有多个以相同帧速率和分辨率录制的视频 我想将两个视频合并为一个视频 因此结果文件将是大视频 我正在使用 MP4 解析器 api 并使用下面的代码 Movie countVideo new MovieCreator build Channe
  • 将 EditText 聚焦在设备上运行的 PopupWindow 中时出现异常

    我正在为 Android 开发一个弹出窗口 它正在工作 我在上面添加了一个 EditText 和一个按钮 当在 ADV 上运行时 它可以正常工作 而在设备上运行时 当我专注于 EditText 时 这会抛出一个奇怪的异常 android v
  • java.lang.UnsupportedOperationException:无法解析索引 13 处的属性:TypedValue{t=0x2/d=0x7f010046 a=-1}

    我在 android attrs xml 文件中添加了一个用于不同色调的属性 在 styles xml 文件中 我为这些属性指定了颜色 因此每种样式的它们都不同 Attrs xml
  • 在 Java 中使用 Inflater 解压缩 gzip 数据

    我正在尝试使用以下方法解压缩 gzip 数据Inflater 根据文档 如果参数 nowrap 为 true 则 ZLIB 标头和校验和 字段将不会被使用 这提供了与 GZIP 和 PKZIP 使用的压缩格式 注意 使用 nowrap 选项
  • wsdl 没有服务元素

    我必须使用 WCF Web 服务并获得 WSDL 外部的 因此无法控制 WSDL 在 WSDL 定义中 我没有找到包含服务 端口和地址元素的服务元素 WSDL 中不存在这种情况正常吗 这对于 WCF WSDL 来说很常见吗 我正在尝试使用轴
  • 多对多不检索映射数据

    Spring boot 2 5 6 我无法安装版本 概要文件 java Getter Setter NoArgsConstructor AllArgsConstructor EqualsAndHashCode FieldDefaults l
  • 我可以关闭并重新打开套接字吗?

    我学习了一个使用套接字的例子 在此示例中 客户端向服务器发送请求以打开套接字 然后服务器 侦听特定端口 打开套接字 一切都很好 套接字从双方 客户端和服务器 打开 但我仍然不清楚这个东西有多灵活 例如 客户端是否可以关闭一个打开的 从两端
  • Microsoft JDBC 中的 JTDS 属性相当于什么?

    我正在将 JTDS 连接更改为 Microsoft JDBC 并且我看到存在于http jtds sourceforge net faq html http jtds sourceforge net faq htmlMicrosoft JD
  • Python 可以替代 Java 小程序吗?

    除了制作用于物理模拟 如抛射运动 重力等 的教育性 Java 小程序之外 还有其他选择吗 如果你想让它在浏览器中运行 你可以使用PyJamas http pyjs org 这是一个 Python 到 Javascript 的编译器和工具集
  • Drools:为什么是无状态会话?

    Drools 使用会话来存储运行时数据 为此 有两种会话 无状态和有状态 与无状态会话相比 有状态会话允许迭代调用 并且似乎比无状态会话具有所有优势 那么为什么会有无状态会话呢 他们服务的目的是什么 与有状态会话相比 它们的优势是什么 谢谢
  • JSP 和 scriptlet

    我知道现在使用 scriptlet 被认为是禁忌 没关系 我会同意Top Star的话 因为我目前只是Java新手 到目前为止我听到的是 它是为了让设计师的生活更轻松 但我想知道 这是否与JSP页面的性能有关 另一方面 如果只是为了 让设计
  • 如何隐藏或删除 Android HoneyComb 中的状态栏?

    如何隐藏或删除 Android HoneyComb 中的状态栏 每次运行应用程序时 我都会发现某些内容必须被状态栏覆盖 我尝试改变AndroidManifest xml 但没有任何改变 你不知道 它被认为是永久的屏幕装饰 就像电容式主页 菜
  • 在另一个布局中以编程方式膨胀布局

    我的 Android 应用程序需要帮助 我需要在另一个布局中膨胀一个布局 但我不知道该怎么做 我的xml代码是这样的 item xml 我需要膨胀多个 xml 取决于可变数量

随机推荐

  • 如何在 ASP.NET MVC 应用程序中设置一个控制器操作的请求超时

    我想增加应用程序中特定控制器操作的请求超时 我知道我可以在整个应用程序的 web config 中执行此操作 但我宁愿仅在这一个操作上更改它 Web config 示例
  • Pytest:使用其他固定装置作为输入的固定装置进行参数化单元测试

    我是参数化和装置的新手 仍在学习 我发现了一些使用间接参数化的帖子 但根据我的代码中的内容 我很难实现 如果有任何关于我如何实现这一目标的想法 我将不胜感激 我的 conftest py 中有几个固定装置 它们向测试文件中的函数 get f
  • 在geom_point中为ggplot2中的负值和正值设置不同的颜色

    给定一个数据框如下 df lt data frame city c bj sh gz sz price c 12 7 5 6 pct c 2 3 5 4 4 stringsAsFactors FALSE Out city price pct
  • 新的 Ember 应用程序出现黑屏

    我是 ember 新手 正在做一个入门教程构建一个简单的应用程序 当我创建一个新应用程序并启动服务器时 我尝试访问本地主机页面 http 本地主机 4200 在我的浏览器中但页面是空白的 浏览器窗口标题是我的应用程序名称 但没有应有的 欢迎
  • 如何删除匹配的标签但保留 JQuery 内容

    我有这样的 HTML div div class a content1 div content 2 div class a b content 3 b div div 我想删除 class a 的 div 但保留它们的内容 我最初的尝试是
  • 使用合并排序计算反转[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 我用Python编写了一个合并排序程序 它运行得很好 但我修改了它来计算所涉及的反转次数 现在它给了我一个错误 这是我的代码 def merge list left righ
  • 调用未定义函数 session_start()

    我正在尝试使用 php 启动会话 但总是收到此错误 Fatal error Call to undefined function session start in www test test php on line 2 我的代码 复制表格h
  • Selenium moveByOffset 不执行任何操作

    我在 Linux Xubuntu 13 10 上使用 Firefox 28 0 运行最新的 selenium 2 41 我试图让 FirefoxDriver 将鼠标移到页面上 在我的测试中 我使用了有线网页 它有很多悬停激活的菜单 但是mo
  • Java中的逻辑运算符优先级

    我对此并不满意 http docs oracle com javase specs jls se7 html jls 15 html jls 15 22 它明确规定了以下内容 如果操作数表达式没有副作用 则每个运算符都是可交换的 and 这
  • VB.net Excel.worksheet().cells().Value

    尝试在 Excel 工作表中写入信息 但有一些奇怪的问题 我在谷歌上查看了信息 但没有结果 所以请帮忙 我添加引用Microsoft excel 14 0对象库 并导入 Microsoft Office interop 我需要从特定单元格获
  • 我可以使用哪些方法通过 Spotify 应用程序进行地理定位?

    Spotify Apps API 不允许 HTML5 地理定位 显然记录的 Location api 调用不起作用 正在从文档中删除 我可以使用哪些方法来对用户进行地理定位 查找网站访问者地理位置的解决方案及其建议http freegeoi
  • 变换后的宽度/高度

    应用后如何检索宽度和高度属性transform rotate 45deg 比如 旋转后 11x11 的正方形变成 17x17 Chrome 结果 但 javascript 仍然返回原始宽度 高度 10x10 我如何获得这个 17x17 您可
  • Powershell Golf:下一个工作日

    如何使用 powershell 查找下一个工作日 好吧 我的手机允许我设置哪些日子是工作日 但 Windows NET 不允许 所以我假设是周一到周五 注意 由于问题包括 高尔夫 我正在打高尔夫球 即尝试为脚本使用尽可能少的字节 结果代码不
  • lapply 适用于数组还是单个元素?

    我对 lapply 是否适用于列表或向量有点困惑 请参阅下面的两个示例 这里 均值函数应用于数字数组 即 1 到 5 x list a 1 5 b rnorm 10 x a 1 1 2 3 4 5 b 1 0 57544290 0 5103
  • C 从管道块读取直到子进程终止

    父进程创建 N 个子进程 每个子进程都用 exec 替换自己 父进程和 exec 之间通过一系列管道进行通信 int pipelinefd N 2 The exec使用以下命令写入管道 char msg 50 sprintf msg tse
  • 让 Google Play Services 4.0.30 与 Android Studio 0.4.2 和 Gradle 0.7 配合使用

    使用 Android Studio 让 Google Play Services 运行的解决方案似乎并不缺乏 我已经尝试过其中的大多数 经过多次试验和多次错误后 我得出的结论是 为了使这些解决方案中的许多解决方案发挥作用 您必须像这些解决方
  • Python igraph:获取有向图中所有可能的路径

    我正在使用 igraph Python 希望获取有向图中两个节点之间的所有可能路径 我知道这个功能get all shortest paths 这是最短路径 但找不到通用路径 Update 我的主要目标是获取这些路径中的所有节点 以便我可以
  • Java 集的“包含任何”之类的东西?

    我有两套相同类型的 A 和 B 我必须查找 A 是否包含集合 B 中的任何元素 在不迭代集合的情况下做到这一点的最佳方法是什么 Set 库有contains object and containsAll collection 但不是cont
  • 将sequelize cli 与typescript 结合使用

    我正在尝试将sequelize 与typescript 一起使用 但不知道如何操作 我安装了一个名为sequelize cli typescript 的软件包 但它不适用于sequelize v6 我知道最好使用迁移来执行我的数据库 我怎样
  • 如何使用 JAXB 自定义 XML 导出

    出于测试目的 我使用 JAXB 从对象生成 XML 这工作正常 代码如下 package com mns mnsutilities jaxb model import java util List import javax xml bind