用Java生成XML

Java生成xml——DOM4J生成 一、DOM4J生成实例 Dom4JToXmlDemo.java public class Dom4JToXmlDemo { public static void main(String[] args) { //1、新建Document对象 Document document = DocumentHelper.createDocument(); //2、添加根节点booksto 阅读详情
 一般情况下,我们只要一提到XML,大多数问题都会集中到解析 XML和 XML结构等方面。在这类技术领域,W3C提出了 DOM 和 SAX规范用来解析数据,Sun提供了Java XML Pack,而 Apache则推出了Xerces 和Xalan。然而,几乎没有什么关注的目光投射到输出XML这一问题上来。把JavaBeans和Swing组件变成 XML的项目倒有一些,但大多数情况下,开发人员只不过希望能用定制的格式输出数据结构,这个任务其实不难。

本文特别探讨了通过Java创建XML文档的一些方法。我会具体提到好几种用Java创建XML文档的方案。它们都各自具备不同的优点,有些很简单,有些则会依赖于某些强大的类库。下面我就从最简单的方法说起。
使用StringBuffer 类
最简单、同时也是最常用的XML文档创建方法就是自己动手。你可以采用StringBuffer 类或者某些Writer 类。其优点是你不需要用到其他库,而且也不用创建多余的对象。可是,这一举措同时也带来了很多缺点。首当其冲的就是无法保证XML的格式正确性。字符在置入String 对象的时候必须仔细考虑。你得特别小心 XML实体的出现,比如用<取代<等。 清单A 对此举例说明。

程序清单A 的输出结果是:
<person name="Jon Smith" age="21"/>

在这个简单的例子里,如果人名很古怪,比如Jon "The Cat" Smith,那么输出格式就出问题了。这段代码在获取名字的时候没有处理引号,结果输出的代码就成了下面这样子,显然这种表示是错误的:
<person name="Jon "The Cat" Smith" age="21"/>

在阅读源代码的时候很难跟踪隐藏在Java内的 XML 。想反,这种开发措施中大约1半左右的错误都归结为没有封闭的标签和错误的引号处理,简而言之就形成了无效的XML。
更明晰和简单的方法:DOM
第2 个办法就是DOM,也就是所谓的文档对象模式(Document Object Model)。在给定对象结构之后,你可以把它转换为某种格式的XML对象结构,然后输出结果。可用的结构类型很多,范围包括 Jakarta Element Construction Kit (ECS)项目的 XML类到完全遵守DOM规范的解析器等,比如Xerces,通常,版本越小输出XML的方法就越简单。清单B 就是一个采用ECS的例子。

清单B 提出了一种输出数据的简明办法。事实上,你可以把两个输出行合并为一个,方法是把output 方法附在新的XMLDocument之后。这是一种采用ECS的有类语法模式,用起来方便之极。不过,这种方法不能很好地针对人员的年龄复制if- null 保护。为了实现这种保护,你必须采用清单C中的代码。

ECS 表现出了好几种优点,你不必避免引号字符(")。你也不需要完全封闭标签,对象会为你做这些工作的,任何XML字符,比如<或者>都被 < 和 >代替,ECS可谓最简单的DOM方法。而用W3C的DOM、JDOM或者Dom4J来处理这种风格的代码则更为复杂一些,当然,W3C的DOM仍然具有独立解析的优点。

采用ECS输出XML的缺点包括了对象所引出的问题。你必须在写出内容之前建立对象。这样做在大多数情况下还是不错的,可你在输出大型XML文件的时候则不希望建立这种XML结构。同样的问题对其他大多数DOM方法也存在。

比起简单地采用Writers 或者 StringBuffer 类而言,ECS相当接近于一种标记。它的体积比较大,但只有很小一部分才用来输出XML。最大的问题是它的活动余地不大。它击败了其他同类型的方案,因为其他类型更大、更笨重而且更复杂。
SAX
SAX(Simple API for XML)可以替代DOM风格的 XML 解析。它由一系列事件或者代码在解析XML文件时所调用的回调函数组成。在你把结果直接输出到Strings的情况下它并不能派多大的用场。但是,它可以用在间接的、更为复杂的方式下。

输出Strings 的代码可以代替输出SAX事件。这一招可比仅仅输出Strings要高多了,它可以加入到一个简单的基类由其把SAX事件转换为XML。

让我们看看下面的例子,这个例子中使用了以下几个类:
•  Person: 业务对象,先前已经进行了说明
•  PersonInputSource: 接纳Person 对象
•  PersonXMLReader: 知道如何把PersonInputSource 转换为SAX 事件
•  XMLPrettyPrinter: 把SAX 事件转换为 XML的ContentHandler

其中最重要的代码在PersonXMLReader内,如清单D所示。

清单 D 中的代码说明了 Person 对象是如何被转换为一系列 SAX 事件的。但这可不是个最简单的活。用SAX把 Person 转换为 XML 是通过清单E中的代码实现的。

采用SAX 显然让你掌握了强大的计算能力,因为你可以在XML上附带SAX解析器而没有采用XMLPrettyPrinter。但是,在增加处理器的时候也会增加复杂性; SAX 是一种更复杂的概念。在多数情况下,简单的方法往往效果最佳。

一旦基本组件编写出来(XMLPrettyPrinter是一个基本InputSource,一个XMLParser 对象),产生事件就是小事一桩了。输出新的 XML 结构只需要 parse 方法和插入组件即可。

围绕SAX 事件建立XML还不是一个快捷、便利的措施。
采用XmlWriter 类
最后我提出个自己的方案,这就是XmlWriter 类。我的思路是采用一种界于太简单和太复杂之间的技术来输出 XML 。

重要的设计需求如下:
•  封装java.io.Writer
•  提供Writer类的API
•  尽可能地处理XML
•  避免建立大型对象结构
•  允许 ECS链式风格

实现以上的这些需求可以让 XML 写成两种风格。首先,它可以用java.lang.Writer 代码写出来,如清单F所示。

其次,它可以用链式方法的编码风格写成,这倒和ECS类似,因为每个write方法都返回 XmlWriter 自身。清单G 给出了这样的例子。

从性能角度上看,XmlWriter 具有一定的显著优势,它几乎没有创建其他对象。具有相当的功能性,可以处理基本的XML片段(但没有注释、缩排或者文档类型)。最重要的是,用起来很简单。

其负面问题已经提到过了,它不能处理注释、缩排或者文档类型。而ECS在 XML 对象写出自身时可以封闭标签,XmlWriter 需要你调用 endEntity 方法。如果实体没有终止就调用该方法就会扔出 XmlWritingException。最后,还有一个close 方法。它并不封闭writer对象,但会完成任何编写中的XML 。或许最重要的是,它会在实体没有终止的情况下扔出XmlWritingException 。
小结
产生XML方法有好几种方法。XmlWriter 并不一定是最佳的XML创建工具,但是这种方法填补了太简单、太笨重乃至太复杂之间的鸿沟。


Java动态生成XML文件 1.说明 在工作中,需要将Java对象动态的 阅读详情

相关推荐

Java解析 XML 及生成XML

1、文档对象模型(Document Object Model,DOM) (tree parser)将读入的XML文档转换为树结构。2、简单API(Simple API for XML SAX) (Stream parser)将读入的XML文档转换为相应的事件。startDocument和endDocument 分别在文档开始和结束时各调用一次。两种解析器比较:如果文档很长,生成树很耗内存,如果不关心上下文,只关心元素,可以使用流。//三种方式获取Document。4、所有属性必须有值,不能为空。

2401_89760128的博客 794

java生成XML文件(5分钟学会)

java 利用dom4j生成xml文件

m0_56726104的博客 1万+

JAVA 生成 XML文件

一个可以用java自动生成xml的文件 参考此文件可以从数据库里面提取数据后生成xml数据库

Java中的XML生成

技术的世界总是充满了无穷无尽的可能性,而我们作为开发者,面对的就是这些可能性带来的挑战和机遇。在Java中生成XML,无论是通过DOM、SAX、StAX,还是JAXB,每种方法都有其独特的魅力和适用场景。希望今天的分享能够帮助你更好地理解和掌握这些技术,为你的开发工作增添一份力量。生活就像代码,总是需要不断地调试和优化,但每一次的成功输出,都是对我们努力最好的回报。希望你们能够继续关注我,和我一起探索更多的技术奥秘,让我们的代码世界更加美好!大家一起加油!我们下次再见!

weixin_46372265的博客 2373

SIwave仿真手册——信号完整性仿真之S参数的提取(二)

上一篇简单了讲述了软件的各个操作界面,本次博客更新关于的仿真,因为第二章完整的内容比较多,所以分成好几篇博客进行分享。

luohuo9844的博客 1万+

使用 Cadence ams 仿真器 对 混合信号电路 进行仿真

文章目录Cadence 基于ams仿真器的混合信号电路仿真建立数字(Digital)模块建立 Analog - Digital 混合仿真原理图建立 Analog - Digital 混合仿真config文件配置混合信号电路仿真环境针对混合信号电路demo进行仿真 Cadence 基于ams仿真器的混合信号电路仿真 你好,这里是一篇关于使用 Cadence 软件通过 ams 仿真器对混合信号电路(D...

mymatin1004的博客 2万+

JAVA生成XML文件

生成一个适合你的列表 项目 项目 项目 项目1 项目2 项目3 计划任务 完成任务 创建一个表格 一个简单的表格是这么创建的:使用居中 使用居左 使用居右SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:一个具有注脚的文本。1Markdown将文本转换为 HTML。您可以使用渲染LaTeX数学表达式 KaTeX:Gamma公式展示 Γ(n)=(n−1)!∀n∈N\Gamma(n) = (n-1)!\quad\forall n\in\mathbb

fzt12138的博客 676

使用Docker搭建MaxKB智能体平台

【代码】使用Docker搭建MaxKB智能体平台。

janthinasnail的博客 708

JAVA生成xml文件

自动生成xml文件

fzt12138的博客 4791

CST仿真微带贴片天线学习笔记

谐振频率为3.48GHz,基板采用Rogers RT5880板材,介电常数2.2,损耗角正切0.0009,厚度1.57mm,馈电方式为同轴馈电。

qq_36521926的博客 9431

帆软js--获取控件和单元格

参数面板: 获取面板控件 ,name为控件名称:_g().parameterEl.getWidgetByName("name") 取值:_g().parameterEl.getWidgetByName("tt3").getValue()2323 赋值:_g().parameterEl.getWidgetByName("tt2").setValue("987") 调用对应的事件比...

江湖行骗老中医 7197

XML Format xml格式化 xml pretty print

    XML pretty print,  XML format,  XML 格式化 今天在项目中用到WebService,发现有时候可能SOAP消息,可能是服务端返回或者客户端请求都有可能 不是格式化好的SOAP消息 例如 &lt;soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"&gt;&lt...

wqjtq的博客 1582

Python爬虫实战:汽车之家车型参数与口碑数据抓取分析

在当今信息爆炸的时代,购车决策已从传统的4S店咨询转变为数据驱动的智能化过程。汽车之家作为国内领先的汽车信息平台,汇聚了海量车型参数、车主口碑和专业评测数据。本文将详细介绍如何使用Python最新爬虫技术构建一个高效、稳定的汽车数据采集系统,通过多维度数据分析辅助用户做出更明智的购车决策。本项目将采用异步爬虫、智能反爬绕过、数据清洗与分析等现代化技术栈,完整实现从数据采集到可视化分析的全流程。本文详细介绍了如何使用Python最新技术构建一个功能完整的汽车之家数据爬虫系统。

2201_76125261的博客 1488

用java生成一个XML

思路是先生成一个xml再利用IO流写到磁盘中去。 生成思路就是注释 package cn.liu.xmtest; import java.io.File; import java.io.FileWriter; import java.io.IOException; import org.dom4j.Document; import org.dom4j.DocumentHelper; im...

MADE_哒哒 2916

基于FPGA的数字信号处理(17)--定点运算的实现实例(饱和Saturate与四舍五入Round)

基于FPGA的数字信号处理(17)--定点运算的实现实例(饱和Saturate与四舍五入Round)

孤独的单刀 2959

CMM软件:PC-DMIS汽车制造二次开发

PC-DMIS 是一种广泛应用于坐标测量机(CMM)的测量软件,它不仅提供了强大的测量功能,还支持用户通过二次开发来扩展其功能。二次开发可以显著提升测量效率,满足特定的测量需求,减少重复性工作,提高数据处理和分析的准确性。本节将介绍 PC-DMIS 二次开发的基本概念、开发环境的搭建以及开发中常用的工具和方法。PC-DMIS 二次开发为用户提供了强大的工具,可以显著提升测量效率、减少重复性工作并提高数据处理和分析的准确性。

kkchenjj的博客 1813

Java——DOM方式生成XML

学完了解析XML,就该学习生成XML文件了。首先学习的是如何使用DOM方式生成XML文件。使用DOM方式生成XML文件有如下几步:首先是创建DOM树(即规定XML文件中的内容): 创建DocumentBuilderFactory对象 通过DocumentBuilderFactory对象创建DocumentBuilder对象 通过DocumentBuilder对象的newDocument()方法创建一

菜鸟的成长之路... 2万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

java 生成xml文件

DOM方式生成 XML 文件 首先创建 DOM 树 的部分: 创建 DocumentBuilderFactry 对象 //创建一个 DocumentBuilderFactory 对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 创建 DocumentBuilder 对象 //创建DocumentBuilder对象 DocumentBuilder db = dbf.newDocumentBuilder();

生活充满热情 5192

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

用java生成xml_JAVA生成XML

生成的类代码:package com.xh.xml;import java.io.FileOutputStream;import java.io.IOException;import org.jdom.Document;import org.jdom.Element;import org.jdom.JDOMException;import org.jdom.output.XMLOutputter;...

weixin_29280219的博客 135

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

java 生成XML 文件

1.背景: 上一篇关于XML 的文章>  http://blog.youkuaiyun.com/nx188/article/details/51417535  ,  说的是java 解析XML, 本文是java 代码将java bean 转化生成XML 文件 2.用的 jar 包是  jdom.jar 3.代码: package XMLGenerate; import java.

水墨江南 545

Java Document生成和解析XML

Document 场景:需要知道文档所有结构 需要把文档一些元素排序 文档中的信息被多次使用的情况 优势:由于Document是java中自带的解析器,兼容性强 缺点:由于Document是一次性加载文档信息,如果文档太大,不太适用 Document操作步骤 第一步:初始化xml解析工厂 DocumentBuilde...

p812438109的专栏 5万+

【Java 进阶篇】Java XML快速入门:理解、解析和生成XML

XML是一种标记语言,用于描述和存储数据。它的设计目标是可读性强、自解释、可扩展性好。XML文档包含标签、元素和属性,用于组织和描述数据。自解释性:XML文档通常包含有关数据的描述,标签和元素名称通常清晰表达数据的含义,使其易于理解。层次性:XML数据以层次结构的方式组织,可以包含嵌套元素,形成父子关系,非常适合表示树状结构的数据。可扩展性:用户可以自定义标签和规则,因此XML适用于各种领域,从配置文件到数据交换。与平台无关。

繁依Fanyi的博客 2552

基于Java的XML操作(XML使用、解析、生成)

基于Java的XML操作(XML使用、解析、生成)1 XML简介2 XML语法2.1 语法简介2.1.1 XML构成及语法基础2.1.2 进阶2.2 XML示例3 XML解析(Java语言)3.1 解析方式3.2 DOM4J解析3.3 DOM4J - XPath 解析XML4 Java生成XML 1 XML简介 XML是一门可扩展标记语言。 主要特性:1)xml具有平台无关性, 是一门独立的标记语言;2)自我描述性。 2 XML语法 2.1 语法简介 2.1.1 XML构成及语法基础 xml有属于自己的

weixin_53202763的博客 1万+

Java生成XML格式

工具: dom4j-1.6.1.jar 相关类 import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.SAXRe...

臭小子的博客 8496

Java怎么利用模板生成xml_java根据xml模板生成xml文件的方法

本文实例讲述了java生成xml格式文件的方法。分享给大家供大家参考,具体如下:这里演示利用Java生成xml格式文件Demo中所用到的jar包Jdom.jar。为了方便理解,我写了个Demoimport java.io.FileOutputStream;import java.io.IOException;import org.jdom.Document;import org.jdom.Ele...

weixin_29474217的博客 1790
上一篇: 研究: 90%恶意代码出自职业犯罪分子之手
下一篇: [转贴]XML配置文件的读取处理
zaowei21
博客等级 码龄25年 38粉丝 517原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值