我的编程空间,编程开发者的网络收藏夹
学习永远不晚

使用JAXBContext 设置xml节点属性

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

使用JAXBContext 设置xml节点属性

JAXBContext 设置xml节点属性

在使用JAXBContext将javaBean转化为xml时

会出现这样的需求:


<xml version="2.0">
    ....
</xml>

那么xml节点里的属性值version需要怎么设置

使用@XmlAttribute标签即可,如下代码。


@XmlRootElement(name = "Xml")
@XmlAccessorType(XmlAccessType.FIELD)
public class RequestBean{
 
    @XmlAttribute(name = "version") //设置节点属性
    private String version; 
    private Body body;         
    @XmlElement(name = "sign")  //设置子节点
    private String sign; 
    //省略封装
}
 
@XmlRootElement(name = "Body")
@XmlAccessorType(XmlAccessType.FIELD)
public class Body{
    ...
}

最终得到的xml文件大致为:


<Xml version="2.0">
    <sign>111111</sign>
    <Body>
 <Amount>111</Amount>
 <Fee>fee</Fee>
 <PayerName>payname</PayerName>
 <AccountType>accountType</AccountType>
    </Body>
</Xml>

JAXBContext解析XML集合对象

@XmlElementWrapper 为数组元素或集合元素定义一个父节点。

如,类中有一元素为List items,若不加此注解,该元素将被映射为


    <items>...</items>
    <items>...</items>

这种形式,此注解可将这个元素进行包装,如:


    @XmlElementWrapper(name="items")
    @XmlElement(name="item")
    public List items;

将会生成这样的XML样式:


    <items>
        <item>...</item>
        <item>...</item>
    </items>

Demo如下:

实体类一(定义一个被包含的子项Item):


package org.ywzn.po; 
import javax.xml.bind.annotation.XmlAttribute; 
public class Item { 
 private String infoType; 
 private String nodeId; 
 private String resultCode; 
 private String resultString; 
 public Item() {
  super();
 }
 
 public Item(String infoType, String nodeId, String resultCode,
   String resultString) {
  super();
  this.infoType = infoType;
  this.nodeId = nodeId;
  this.resultCode = resultCode;
  this.resultString = resultString;
 }
 
 @XmlAttribute(name = "InfoType")
 public String getInfoType() {
  return infoType;
 }
 
 public void setInfoType(String infoType) {
  this.infoType = infoType;
 }
 
 public String getNodeId() {
  return nodeId;
 }
 
 public void setNodeId(String nodeId) {
  this.nodeId = nodeId;
 }
 
 public String getResultCode() {
  return resultCode;
 }
 
 public void setResultCode(String resultCode) {
  this.resultCode = resultCode;
 }
 
 public String getResultString() {
  return resultString;
 }
 
 public void setResultString(String resultString) {
  this.resultString = resultString;
 } 
}

实体类二(定义一个有List集合的实体类):


package org.ywzn.po; 
import java.util.List; 
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
 
@XmlRootElement
public class Message { 
 private String version; 
 private Head head; 
 private List<Item> items; 
 @XmlAttribute(name="version")
 public String getVersion() {
  return version;
 }
 
 public void setVersion(String version) {
  this.version = version;
 }
 
 @XmlElement(name="Head")
 public Head getHead() {
  return head;
 }
 
 public void setHead(Head head) {
  this.head = head;
 }
 
 public List<Item> getItems() {
  return items;
 }
 
 @XmlElementWrapper(name="Items")
 @XmlElement(name="Item")
 public void setItems(List<Item> items) {
  this.items = items;
 }  
}

测试方法:


package org.ywzn.main; 
import java.util.ArrayList;
import java.util.List; 
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller; 
import org.ywzn.po.Head;
import org.ywzn.po.Item;
import org.ywzn.po.Message;
import org.ywzn.po.Parameters;
import org.ywzn.po.Room;
 
public class Java2XMLMany { 
 public static void main(String[] args) {
  // <?xml version='1.0' encoding='UTF-8' standalone='no' ?> <Message
  // version='1.0'><Header Time='2015-05-22 10:34:27' MessageType='LOGIN'
  // BusinessId='B730EB39-CEFF-4a38-B633-D8936EB8AEF7' SessionId='936'
  // /><Parameters> <items Sum='1' Offset='1' Cur='1'> <item
  // Infotype='LogUser'> <PassWord
  // >D41D8CD98F00B204E9800998ECF8427E</PassWord></item> </items>
  // </Parameters> </Message>
 
  // TODO Auto-generated method stub
  Item item = new Item("LOGIN","789", "xxx","xxx");
  List<Item> list = new ArrayList<Item>();
  list.add(item);
  Head head = new Head("2015-05-21 16:46:14", "LOGIN", "8D24CE2B-5");
  Parameters parameters = new Parameters(list);
  // Message message = new Message(head,"1.0",parameters);
  Message message = new Message();
  message.setVersion("1.0");
  message.setHead(head);
  message.setItems(list);
  try {
   JAXBContext context = JAXBContext.newInstance(Message.class);
   Marshaller createMarshaller = context.createMarshaller();
   createMarshaller
     .setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);// 是否格式化生成的xml串
 
   createMarshaller.marshal(message, System.out);
  } catch (JAXBException e) {
   e.printStackTrace();
  }
 }
 
}

输出:


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<message version="1.0">
    <Head businessId="8D24CE2B-5" MessageType="LOGIN" Time="2015-05-21 16:46:14"/>
    <Items>
        <Item InfoType="LOGIN">
            <nodeId>789</nodeId>
            <resultCode>xxx</resultCode>
            <resultString>xxx</resultString>
        </Item>
    </Items>
</message>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

使用JAXBContext 设置xml节点属性

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用JAXBContext设置xml节点属性

这篇文章给大家分享的是有关如何使用JAXBContext设置xml节点属性的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。JAXBContext 设置xml节点属性在使用JAXBContext将javaBean转化
2023-06-20

怎么使用jQuery设置属性可编辑

本文小编为大家详细介绍“怎么使用jQuery设置属性可编辑”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用jQuery设置属性可编辑”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、简介jQuery是一种
2023-07-06

css中使用实现属性设置边框

今天就跟大家聊聊有关css中使用实现属性设置边框,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。css的三种引入方式1.行内样式,最直接最简单的一种,直接对HTML标签使用style=
2023-06-14

怎么使用云服务器ip做节点设置

使用云服务器ip可以设置您的本地主机IP地址。以下是一些步骤:在Windows系统中,可以使用“开始/运行”或“msconfig”选项打开“网络和共享中心”。在这里,可以设置您的本地主机的IP地址,默认值是本地主机的IP地址。您的计算机可以使用自定义的IP地址值来自定义默认值。您也可以通过“网络和共享中心”中的“更改您的IP地址”来自定义您的IP地址。如果您有多个IP地址空间,您需要将所
2023-10-26

如何使用CSS的border-radius属性设置圆弧

小编给大家分享一下如何使用CSS的border-radius属性设置圆弧,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!方法:使用css的border-radius
2023-06-08

怎么使用云服务器ip做节点设置方法

使用云服务器ip地址做节点设置,您需要先配置云服务器的IP地址和端口号。下面是具体操作步骤:在您的电脑或者服务器上运行下面的命令:ipconfig/all:在本地网络上启用云服务器IP地址。输入以下命令:ping123.123.456[端口],如果您的路由器有这些端口:ping192.168.1.0[端口],如果您的服务器有这些端口:ping123.123.456[协议],如果路由器支持这
2023-10-26

css中使用什么属性来设置元素显示位置

小编给大家分享一下css中使用什么属性来设置元素显示位置,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!css的三种引入方式1.行内样式,最直接最简单的一种,直接对
2023-06-14

Android使用TextView,设置onClick属性无效的解决方法

Android在布局文件中为View提供了onClick属性,使用方法如下:
2022-06-06

使用placeholder属性怎么设置input文本框的信息

今天就跟大家聊聊有关使用placeholder属性怎么设置input文本框的信息,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。带有 placeholder 文本的搜索字段:
2023-06-09

如何在CSS3中使用opacity属性设置透明效果

本篇文章为大家展示了如何在CSS3中使用opacity属性设置透明效果,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。CSS3 opacity 属性基本语法opacity: 不透明度;CSS3 opa
2023-06-08

怎么在css中使用font属性设置字体颜色

今天就跟大家聊聊有关怎么在css中使用font属性设置字体颜色,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。css的font字体颜色设置方法:新建一个html文件,命名为test.h
2023-06-14

怎么使用云服务器ip做节点设置方法教程

1.了解云服务器IP云服务器IP是指云服务器的公网IP地址,可以用于访问云服务器。在使用云服务器IP做节点之前,需要先了解云服务器IP的相关信息,包括IP地址、子网掩码、网关等。2.配置云服务器IP在使用云服务器IP做节点之前,需要先配置云服务器IP。具体步骤如下:登录云服务器,进入系统管理界面。打开网络设置,选择“静态IP地址”。输入IP地址、子网掩码、网关等相关信息。点击“保
2023-10-26

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录