Java与XML的故事一:通过XSD生成Java类

XXE漏洞深度解析:从XML外部实体原理到实战攻防 XML外部实体(XXE)漏洞是一种基于XML解析机制的安全缺陷,其核心原理在于应用程序在处理用户可控的XML输入时,未对外部实体引用进行有效限制。XML作为可扩展标记语言,通过DTD定义文档结构,而外部实体允许引用系统资源或远程内容。当攻击者注入恶意实体定义时,可利用解析器加载外部资源,从而引发安全风险。该漏洞的技术价值在于其攻击面的多样性,不仅能导致敏感文件读取,还能作为SSRF攻击的入口点,探测内网服务,甚至在某些环境下实现远程代码执行。在应用场景上,XXE常见于显式处理XML的Web服务接口、支持XM 阅读详情

JAXB让Java与XML之间繁琐的机械编码成为过去,现在可以简单的通过XSD文件生成对应的Java文件,我一般使用maven-jaxb2-plugin来实现xsd到java文件的生成。
POM配置
指定xsd文件路径,制定binding文件路径,指定生成java文件路径

<plugin>
  <groupId>org.jvnet.jaxb2.maven2</groupId>
  <artifactId>maven-jaxb2-plugin</artifactId>
  <version>0.9.0</version>
  <executions>
    <execution>
      <id>schema1-generate</id>
      <goals>
        <goal>generate</goal>
      </goals>
      <configuration>
       <schemaDirectory>src/main/resources/dir1</schemaDirectory>
        <schemaIncludes>
          <include>1.xsd</include>
        </schemaIncludes>
        <extension>true</extension>
        <generateDirectory>${project.build.directory}/generated-sources/xjc1</generateDirectory>
        <episodeFile>${project.build.directory}/generated-sources/xjc1/META-INF/1.episode</episodeFile>
          <bindingDirectory>src/main/resources/dir1</bindingDirectory>
        <bindingIncludes>
             <include>1.xjb</include>
        </bindingIncludes>
      </configuration> 
   </execution> 
 </executions>
</plugin>

binding.xjb配置
实现类型匹配,包匹配,如果类型匹配复杂,可能需要实现自己的转换类

<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.0" schemaLocation="book.xsd">

    <jaxb:globalBindings
fixedAttributeAsConstantProperty="true"
typesafeEnumBase="xs:string"
typesafeEnumMemberName="generateName"
generateIsSetMethod="true">
<!-- 
<xjc:noValidator
 />
<xjc:noValidatingUnmarshaller
 />
-->

        <xjc:serializable uid="1" />
        <jaxb:javaType name="java.util.Calendar" xmlType="xs:dateTime" parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime" printMethod="javax.xml.bind.DatatypeConverter.printDateTime" />
    </jaxb:globalBindings>    
    <jaxb:schemaBindings schemaLocation="1.xsd" node="/xs:schema">        
     <jaxb:package name="com.cloud" /> 
    </jaxb:schemaBindings>
  </jaxb:bindings>

Note1: 新版本的plugin不止可以生成java class,还可以帮忙生成object的最重要的几个方法:toString, equals, hashCode, clone,只要在configuration里配置对于的plugin就可以了

<configuration>
    <extension>true</extension>
    <args>
        <arg>-XtoString</arg>
        <arg>-Xequals</arg>
        <arg>-XhashCode</arg>
        <arg>-Xcopyable</arg>
    </args>
    <plugins>
        <plugin>
            <groupId>org.jvnet.jaxb2_commons</groupId>
            <artifactId>jaxb2-basics</artifactId>
            <version><!-- version 0.9.0--></version>
        </plugin>
    </plugins>
</configuration>

Note2: 我遇到过同一个项目中2个xsd文件有同样的node type,不同的内容,虽然指定了不同包来generate source还是报错,最后的解决方案是用2个execution分别解析不同的xsd文件,不过我使用cxf插件就没有遇到这个问题,可以在一个execution里面生成想要的所有Java class。

maven-jaxb2-plugin:用于XML模式编译的最先进的JAXB2 Maven插件 JAXB2 Maven插件 欢迎使用org.jvnet.jaxb2.maven2:maven-jaxb2-plugin ,这是用于XML Schema编译的最先进且功能齐全的Maven插件。 这个Maven插件包装并增强了 并允许将XML Schema(以及WSDL,DTD,RELAX NG)编译为Maven构建中的Java类。 如果您对Mojohaus JAXB2 Maven插件( org.codehaus.mojo:jaxb2-maven-plugin ) org.codehaus.mojo:jaxb2-maven-plugin ,请单击到相应的网站。 快速开始 将您的架构( *.xsd )和绑定( *.xjb )放入src/main/resources文件夹。 将插件添加到您的pom.xml : < project> ... < build> < plugin 立即下载

相关推荐

解读文献(五)------基于阻抗控制

文章目录背景主动柔顺控制阻抗控制基于力的阻抗控制基于位置的阻抗控制力位混合控制 背景 主动柔顺控制 阻抗控制 基于力的阻抗控制 基于位置的阻抗控制 力位混合控制 ...

accumulation 1万+

Maven JAXB 2.x Plugin plugin.xml

Maven build plugin config <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!-- tag::wsdl[] --> &l

wuyujin1997的博客 1153

LabVIEW专栏九、类的继承与多态实践

本文深入探讨了LabVIEW中面向对象编程的核心概念——类的继承与多态。通过构建仪器参数父类与设备基类,并以网口设备为例创建子类,详细演示了如何利用继承实现代码复用,并通过多态机制实现统一接口调用不同仪器类型,从而构建灵活、可扩展的自动化测试与仪器控制系统。

weixin_29235525的博客 249

JAXB2 Maven 插件常见问题解决方案

JAXB2 Maven 插件常见问题解决方案 1. 项目基础介绍和主要编程语言 JAXB2 Maven 插件是一个开源项目,它利用 Java API for XML Binding (JAXB) 技术,主要执行两个任务:从 XML Schema 生成 Java 类,以及从注解的 Java 类生成 XML Schema。这个插件通过委托 Java SDK 中捆绑的 XJC 和 Schemagen 工...

gitblog_01056的博客 721

【AutoDL】使用云服务器跑深度学习代码

1.算力市场 租用服务器,选择自己心仪的服务器2.镜像可以选择一些基础的镜像,社区镜像里是git上有的环境。3.上传文件在文件存储中,选择上传的区,在右边点击上传,选择自己的文件上传到云服务器中。

weixin_45768644的博客 3701

DANN实战:用Python手把手教你实现对抗迁移学习(附完整代码)

本文通过Python实战教程,手把手教你实现DANN对抗迁移学习模型,以解决领域偏移问题。文章详细解析了领域对抗神经网络的核心机制,包括梯度反转层和领域判别器的构建,并提供了从数据准备、模型搭建到训练评估的完整代码,帮助开发者快速掌握这一强大的无监督领域自适应技术。

net55的博客 317

**JAXB2 Maven Plugin 使用指南**

JAXB2 Maven Plugin 使用指南 1. 项目目录结构及介绍 JAXB2 Maven Plugin 是一个基于Maven的插件,用于通过Java API for XML Binding(JAXB)版本2及其以上版本,自动化地从XML模式生成Java类或从注解的Java类生成XML模式。在GitHub仓库 https://github.com/mojohaus/jaxb2-maven-p...

gitblog_01132的博客 1457

【GlobalMapper精品教程】084:tif(tfw)、jpg(jgw)、png(pgw)的区别与联系

摘要:本文介绍了TFW、JGW、PGW等地理参考文件的基本原理和应用。这些文件通过简单的文本格式存储栅格图像的地理坐标信息,适用于平面坐标系下的GIS数据处理。文章详细说明了文件各行的含义,并提供了在ArcGIS和Globalmapper中生成这些文件的具体操作步骤,包括导出TIFF、JPG、PNG格式时勾选生成对应坐标文件的选项。这些文件虽然简单易用,但仅适用于平面坐标系,且功能相对有限。配套视频教程提供了更详细的操作演示。

智慧空间实验室 2400

[亲测可用]springBoot调用对方webService接口的几种方法示例

平常我们开发调用接口一般会用到几种协议方式,有restful的,这个是最简单开发的,还有一种就是webservice协议 那什么是webservice呢,Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序 在调用别人写好...

小小鱼儿小小林的博客 5万+

【C++】ROS:ROS1环境配置与基础示例

ROS1环境配置与基础示例

DevFrank的博客 2103

【2026年华为秋招(AI)-2月4日-第一题(100分)- 选择题】(题目+思路+Java&C++&Python解析+在线测试)

本文摘要:本文包含20道选择题,涵盖机器学习、线性代数、Transformer架构、概率统计等多个领域。题目涉及正交矩阵性质、Transformer注意力机制、聚类距离度量、ReAct框架、Softmax函数、混淆矩阵计算、Flash-Attention优化、位置编码、期望计算、归一化方法、矩阵迭代法、矩阵秩、大模型架构、神经网络推理、泊松流性质、SVM核函数以及聚类算法等知识点。每道题均提供解析,帮助理解核心概念和解题思路。

m0_73659489的博客 125

Java与XML的故事序:Jaxb和Jaxp

简介JAXB和JAXP的基本知识

cloud的技术积累 1187

cartographer如何使用2个反光柱子作为一个landmark

2个反光柱的摆放要求:靠着墙摆,因为我们只能从一侧看到2个反光柱,从两侧都看到至少需要3个反光柱来定位。 landmark检测原理:因为我们是从一侧看到2个反光柱,所以看到2个反光柱在一帧激光数据中会有顺序,有2种情形,如下图 这两种情形,我们发现 情形1: 这种情形2个反光柱子被检测到的激光角度小于180,我们认为大一些激光角度的是原点。 情形2: 这种情形2个反光柱子被检测到的激光角度大于180,我们认为小一些激光角度的是原点。 这样原点就固定下来,并是唯一的。2个反光柱构成的坐标系也就确定了。和激光坐

南北粉面馆 3827

Java与XML的故事二:XML与Java Object互相转换

Java Object与XML之间的转换第二步:XML与Java Object通过Java代码实现互相转换和验证

cloud的技术积累 2173

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Java 获取xsd文件body_java – 自动从WSDL中将内联XSD提取到XSD文件...

我正在使用第三方Web服务,其定义和实现是我无法控制的.此Web服务将来会发生变化.应使用Web Service生成XML文件,该文件包含与Web Service相同的一些数据(由相同的XSD类型表示)以及程序生成的一些额外信息.我的方法:>创建我自己的XSD,参考被调用的Web服务的WSDL的XSD定义(这个XSD显然还包括XSD类型的额外信息.)>使用Java XML数据绑定框架(...

weixin_28872105的博客 390

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

告别XML编辑噩梦:Red Hat的VS Code插件如何让结构化数据编辑变得轻松愉快

你是否曾因XML文件的复杂性而感到头痛?那些嵌套的标签、繁琐的命名空间、还有永远记不住的XSD语法规则……🤯 别担心,Red Hat的XML Language Support插件已经为你解决了这一切!这个基于LemMinX语言服务器的强大工具,正在重新定义XML编辑体验。 ## 从"XML恐惧症"到"编辑愉悦感"的转变 还记得那些手动敲打`<`和`>`符号的夜晚吗?当你在Spring Boo

gitblog_00350的博客 396

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

XML的方法–第3部分– JAXB

如果您还记得第1部分和第2部分中的内容 ,那么我将介绍使用 Pete的Perfect Pizza (具有丰富创意的比萨公司)的 残酷场景来解析XML消息的不同方法 。 在这个故事中,您是Pete's的雇员,因此被要求实现一个从前台向厨房发送订单的系统,然后您想到了使用XML的想法。 您刚刚使SAX Parser起作用,但是Pete走向全球,在世界各地开设厨房,并通过Internet接受订单。...

danpu0978的博客 159

操作xml字符串_Java笔记XML

“要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人…万中无一”——包租婆这道理放在Java语言学习上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从java语言小白进阶到高手,需要经历的是日积月累的学习。那么如何学习呢?当然是每天都要学习java知识!!作者韩大宾白天搬砖,晚上做梦。我有故事,你有酒么?1XMLXML:1.概念:Extensible Mar...

weixin_33954874的博客 351

jaxb xml_XML的方法–第3部分– JAXB

jaxb xml 如果您还记得第1部分和第2部分中的内容 ,那么我将介绍使用 Pete的Perfect Pizza (具有丰富创意的比萨公司)的 残酷场景来分析XML消息的不同方法 。 在这个故事中,您是Pete's的雇员,因此被要求实现一个从前台向厨房发送订单的系统,然后您想到了使用XML的想法。 您刚刚使SAX Parser起作用,但是Pete走向全球,在世界各地开设厨房,并使用Inter...

danpu0978的博客 146

【java】——我与spring的故事

对于你的敬仰,是在哪一个秋天,而与你的相识却推迟到了这个秋天,然而你却让我的思绪犹如秋天的落叶一样在空中肆意横飞,感谢路上有你——spring

一直在奋起,一直在路上 947

XML的方法–第4部分– XMLBeans

如果您从第1部分 , 第2部分和第3 部分中还记得,我将介绍使用 Pete的Perfect Pizza (具有重大创意的比萨公司)的 残酷场景来解析XML消息的不同方法 。 在这个故事中,您是Pete's的雇员,因此被要求实现一个从前台向厨房发送订单的系统,然后您想到了使用XML的想法。 您刚刚使SAX Parser起作用,但是Pete走向全球,在世界各地开设厨房,并通过Internet接受...

danpu0978的博客 247

xmlbeans_XML的方法–第4部分– XMLBeans

xmlbeans 如果您从第1部分 , 第2部分和第3 部分中还记得,我将介绍使用 Pete的Perfect Pizza (具有丰富创意的比萨公司)的 残酷场景来解析XML消息的不同方法 。 在这个故事中,您是Pete's的雇员,因此被要求实现一个从前台向厨房发送订单的系统,然后您想到了使用XML的想法。 您刚刚使SAX Parser起作用,但是Pete走向全球,在世界各地开设厨房,并使用In...

danpu0978的博客 448

SoapUI调试WebService接口:5大典型坑点与实战解决方案

WebService作为基于SOAP协议的企业级服务调用标准,其核心在于通过WSDL契约和XML报文实现严格的类型化通信。理解其工作原理,关键在于掌握XML Schema定义的数据结构、命名空间隔离机制以及SOAP信封的规范格式。这些技术特性确保了跨平台、跨语言调用的可靠性与互操作性,在金融、电信等传统企业系统集成中具有不可替代的价值。然而,在工程实践中,从WSDL解析、请求构建到响应处理,每一步都可能遇到意料之外的障碍。本文聚焦于使用SoapUI这一专业工具进行调试时,最常遭遇的命名空间混淆、复杂类型构造

weixin_34292402的博客 344

DOM4J 实现对XML文档的增、删、改、查

前言:首先谈一个小故事:当年Java准备做对XML的解析时,对解析器的实现方向在内部发生了争执,后来高层没有听从工程师建议,坚持开发出了JDOM,而主要的工程师选择离开Java 按照自己的方式实现,就是DOM4J 。后来结果表明,DOM4J 完胜了JDOM。下面,让我们来了解一下通过DOM4J 实现对XML文件进行增删改查的过程。 1、待解析的XML文件: <students xmln

胡根得 天行健,君子以自强不息。 6565

JavaWeb笔记01-XML

今日内容 XML 概念 语法 解析 XML: 概念: Extensible Markup Language 可扩展标记语言 可扩展:标签都是自定义的.<user><student> 功能 存储数据 配置文件 在网络中传输 一个故事 由于浏览器之间的竞争,导致HTML发展的十分不顺利 用户:唉,这怎么报错了呢? 浏览器1:我不用写引号就能应用属性.贼强 浏览器2...

秋叶夏风的博客 458

Maven系列(一)Maven的简介与使用

公司开发APP,服务器端的开发任务落到了我的手里,作为一个应届小白,就按照普通的方法来搭建SringMVC+Hibernate+MySQL,期间引入了很多的jar包,当我将项目导入SVN,让另一个同事检出的时候,感觉有别扭,一个是jar包随着项目一并检出,另一个是jar包要是发现有冲突,还要一个一个找出来删掉再重新检出。这样做起来很麻烦,想到之前在另一家公司里实习的时候,那时候接触到的项目管理工具M

纸上得来终觉浅,绝知此事要躬行 3070
上一篇: Java与XML的故事二:XML与Java Object互相转换
下一篇: Java Zip/Unzip Files 记录
开心的D哥
博客等级 码龄22年 63粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值