Java解析XML-JDK

news2024/9/20 18:36:15

JAXB 概述

        JAXB(Java Architecture for XML Binding)是J2SE和J2EE平台的一部分,让开发者能够快速完成Java类和XML的互相映射。

        JAXB 允许Java人员将Java类映射为XML表示方式。其实,JAXB是一个业界标准,是一项可以根据XML Schema产生Java类的技术,并且可以将Java对象树的内容写到XML文档中。

JAXBContext

        JAXBContext类提供客户端的JAXB API入口点。 它为管理实现JAXB绑定框架操作所必需的XML / Java绑定信息提供了一个抽象:unmarshal,marshal和validate。

Marshaller.class :Marshaller类负责管理将Java内容树序列化为XML数据的过程
Unmarshaller.class :Unmarshaller类管理将XML数据反序列化为新创建的Java内容树的过程,可选地在未编组的情况下验证XML数据
Validator.class:从JAXB 2.0开始,此类已被弃用且可选。 Validator类负责控制运行时内容树的验证

        客户端应用程序通常使用newInstance方法的这两种样式之一获取此类的新实例;

static JAXBContext newInstance(类... classesToBeBound) 
获得一个新的 JAXBContext类的实例。  
static JAXBContext newInstance(类[] classesToBeBound, Map<String,?> properties) 
获得一个新的 JAXBContext类的实例。 

 解组&编组

参考 JAXBContext、Unmarshaller、Marshaller 类注释

// Example: Code fragment
@XmlRootElement
class Point {
  int x; //属性都不得为private protected
  int y;
  Point(int _x,int _y) {x=_x;y=_y;} // 需要提供构造方法,全参、无参
}

// Example: Code fragment
@XmlRootElement
class Point3D extends Point {
   int z;
   Point3D(int _x,int _y,int _z) {super(_x,_y);z=_z;}
}

//Example: Code fragment corresponding to XML output *
marshal( new Point3D(3,5,0), System.out );
  
<!-- Example: XML output -->
<!-- The element name is point3D not point -->
<point3D>
 <x>3</x>
 <y>5</y>
 <z>0</z>
</point3D>
  
<!-- Example: XML schema definition -->
<xs:element name="point3D" type="point3D">
<xs:complexType name="point3D">
 <xs:complexContent>
   <xs:extension base="point">
	 <xs:sequence>
	   <xs:element name="z" type="xs:int">
	 </xs:sequence>
   </xs:extension>
 </xs:complexContent>
</xs:complexType>

javax.xml.bind.JAXBContext#newInstance(java.lang.Class...)

获取JAXBContext类的一个新实例。

        客户端应用程序必须提供新上下文对象需要识别的类列表。新上下文不仅将识别所有指定的类,而且还将识别从指定的类中直接/间接静态引用的任何类引用类的子类@XmlTransient引用类没有向JAXBContext注册

// 如果执行newInstance(Foo.class),新创建的JAXBContext将同时识别Foo和Bar,但不识别Zot或FooBar:
class Foo {
            @XmlTransient FooBar c;// 不识别@XmlTransient标注的类
            Bar b;					// Bar类型的数据有两个 不会识别成子类
			static Zoo zoo;			// 直接使用的静态类会识别 & 间接引用的也会识别 
       }
class Bar { int x; }
class Zot extends Bar { int y; }
class FooBar { }
class Zoo { }

XML schema 元素 | 菜鸟教程 (runoob.com)

 javax.xml.bind.annotation

Unmarshaller 与 Marshaller 在编组或解组时候需要一些辅助的注解

 

@XmlRootElement(name = "point" , namespace = "point") //根元素标签需要指定命名空间 targetNamespace="point" 参见 javax.xml.bind.annotation.XmlSchema
@XmlAccessorType(XmlAccessType.FIELD) // 序列化时候使用字段注入值
class Point {
    @XmlElement(name = "x") //代表子元素<point> <x>
    private int x;
    @XmlElement(name = "x")
//    @XmlAttribute // 代表标签的属性 <point y=? >
    private int y;

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }

    public Point() {
    }

    Point(int _x, int _y) {
        x = _x;
        y = _y;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/80207.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业景气指数、企业家信心指数-季度数据(2005-2022年)

&#xff08;2005-2022年&#xff09; 企业景气指数&#xff08;企业综合生产经营景气指数&#xff09;是根据企业负责人对本企业综合生产经营情况的判断与预期而编制的指数&#xff0c;用以综合反映企业的生产经营状况。 企业家信心指数综合反映企业家对宏观经济的看法和信心…

【Make YOLO Great Again】最终版本YOLOv1-v7全系列大解析(全网最详细汇总篇)

Rocky Ding公众号&#xff1a;WeThinkIn写在前面 【Make YOLO Great Again】栏目专注于从更实战&#xff0c;更深刻的角度解析YOLOv1-v7这个CV领域举足轻重的算法系列&#xff0c;并给出其在业务&#xff0c;竞赛以及研究维度的延伸思考。欢迎大家一起交流学习&#x1f4aa;&am…

node+vue基于微信小程序的乐团团购系统的设计与实现

随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&#xf…

Stm32旧版库函数4——nrf24l01 32位数据发送接受

stm32 32位 发射&#xff08;硬件SPI 引脚重映射&#xff09;&#xff1a; #include "stm32f10x_lib.h" #include "sys_config.h" #include "usart.h" #include "nrf.h" #include "delay.h" extern u8 TX_ADDRESS[TX_ADR_…

在Windows OS中安装与配置Scala的IDE环境

在Windows OS中安装与配置Scala的IDE环境一、Scala的安装过程二、Scala与IDE的集成一、Scala的安装过程 &#xff08;1&#xff09;下载与安装Scala软件 以下有个帖子&#xff0c;其详细记录了Window系统在安装Scala的步骤&#xff0c;可供读者参考&#xff0c; Window系统详…

jmeter的安装和简单使用

jmeter的安装和简单使用 Jmeter是一款优秀的开源测试工具&#xff0c;就算是开发也要了解一下。 下载 window下载zip包即可 下载地址&#xff1a; https://jmeter.apache.org/download_jmeter.cgi <img src“https://cdn.jsdelivr.net/gh/cloudinwinter/myimagemaster/…

COVID应对小tips

不信谣不传谣&#xff0c;只是自己的一点记录&#xff0c;有引用到各位大佬的内容&#xff0c;侵删&#xff0c;感谢感谢&#xff0c;对自己可以理中客&#xff0c;对别人还是尽可能主观上的友好&#xff0c;不要慷他人之慨。 准备 喉咙刺痛方面&#xff1a;柠檬&#xff08;…

【简化版蒙板扣图】带你轻松走进OPENCV蒙板扣图的世界

蒙板扣图的学习目标&#xff1a; 图像素材&#xff1a; 本操作适用图片&#xff1a; -前景清晰&#xff0c;背景模糊的原始图片 自定义库&#xff1a; 把OPENCV中的干扰理解的部分&#xff0c;制作成独立的库文件&#xff0c;这样学友们就可以轻松的理解蒙板扣图的真正含义…

C语言:分支与循环语句

文章目录一.什么是语句二.控制语句三(一).分支语句if-else3.1if3.2if-else3.3if-else嵌套3.4悬空else3.5if语句判断的流程3.6if语句可能会犯的小错误三(二).分支语句switch四.循环语句4.1while语句4.2do while语句4.3for语句4.4一道简单又不简单的小题目4.5循环总结4.6循环上的…

Opencv中关于特征点匹配定位的问题(一)DMatch解析

Opencv中关于特征点匹配定位的问题回顾定位回顾 在我们检测到特征点之后&#xff0c;通常进行特征点的匹配。 首先我们先回顾一下使用Brute-Force匹配器来进行匹配。 import cv2 import numpy as np import matplotlib.pyplot as plt#读取图片 imgcv2.imread(./newmm.png) te…

宝藏软件Obsidian知识体系搭建,免费的多端云同步

宝藏软件Obsidian知识体系搭建&#xff0c;免费的多端云同步。 为什么推荐Obsidian 人很奇怪,在关注短期目标的时候,会有成功失败之说,但是如果关注体系呢&#xff1f;就不那么会在乎短期收益了. 为什么呢&#xff1f;因为体系可能会创造强大的滚雪球效应. 使用笔记软件颇多…

如何针对时间片论法进行优化

前言 通过该篇学习了嵌入式的任务调度&#xff08;即时间片论法&#xff09;后&#xff0c;了解到通过以1ms为调度时间单位轮询判断是否需要执行函数任务&#xff0c;那么下面介绍如何基于时间片论法的任务调度模式充分利用MCU的资源&#xff0c;姑且先称这种方式为时间片差分…

一致性hash算法

目录 1.业务场景 2.传统hash算法 2.一致性hash算法 2.1.算法过程 2.1.一直性hash算法的优点 2.2.一致性hash算法的缺点 2.3.hash倾斜的解决办法 1.业务场景 假设有30000张图片需要存放到编号为1、2、3的3台服务器上。 2.传统hash算法 假设有30000张图片需要存到3台服务器…

【JavaWeb开发-Servlet】拾起海中的漂流瓶增强版

目录 原版&#xff1a; 1、前端样式 2、错误提示 3、实现id序列增长 完整项目代码&#xff1a; 原版&#xff1a; 【JavaWeb开发-Servlet】拾起海中的漂流瓶_代码骑士的博客-CSDN博客需求&#xff1a;点击网页按钮随机显示一句话&#xff1a;1、内容涵盖&#xff1a;老人…

PySpark大数据计算教程

PySpark大数据计算教程 了解如何将 Spark 与 Python 结合使用&#xff0c;包括 Spark Streaming、机器学习、Spark 2.0 DataFrames 等&#xff01; 课程英文名&#xff1a;Spark and Python for Big Data with PySpark 此视频教程共4.0小时&#xff0c;中英双语字幕&#xf…

多模态(红外,可见光)目标检测

【github】https://github.com/DocF/multispectral-object-detection 一.环境 1.1 环境 基本依赖和yolov5基本相同&#xff0c;当然也可以配置在虚拟环境中 git clone https://github.com/DocF/multispectral-object-detection cd multispectral-object-detection pip ins…

基于燃压缩空气储能系统的零碳微能源互联网优化调度(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f468;‍&#x1f4bb;做科研&#xff0c;涉及到一个深在的思想系统&#xff0c;需要科研者逻辑缜密&#xff0c;…

由美国火星照片细节,分析造假的疑点

穿帮都是细节。 除了阿波罗登月&#xff0c;你觉得美国还在哪些航天项目中有造假嫌疑&#xff1f; - 知乎 西红柿加醋 能走着游泳就好了 ​ 关注 无可靠信息来源 423 人赞同了该回答 除了登月&#xff0c;比较又争议的当然就数登火了&#xff0c;比如出自Nasa官方网站上的…

CSS布局-定位,相对,绝对,子绝父相,固定定位,层级关系。

CSS布局-定位&#xff0c;相对&#xff0c;绝对&#xff0c;子绝父相。 目录CSS布局-定位&#xff0c;相对&#xff0c;绝对&#xff0c;子绝父相。1、定位1.1 网页常见布局方式1.2 定位的常见应用场景2.1 定位初体验2.2 使用定位的步骤3.1 静态定位4.1 相对定位5.1 绝对定位5.…

矩阵理论复习(五)

2004年试题 Hermite矩阵酉相似于对角阵 验证相容矩阵范数 盖尔圆盘互不相交&#xff0c;则特征值都不相同&#xff0c;若盖尔圆盘全部出现在右半复平面上&#xff0c;则特征值全为实数。 矩阵二范数的计算 最大秩分解M-P广义逆矩阵方程是否有解 2005年试题 正定矩阵&a…