简析JAVA的XML编程(java-xml初学者)

31、JAVA进阶——XML知识 一、认识XML 二、XML文档结构 1. XML声明 2. 标签 3. 根元素 4. 元素 5. 属性 6. XMl中的特殊字符处理 7. XML中的注释 8. 格式良好的XML文档 三、XML优势 四、XML中的命名空间 1. 命名空间的必要性 2. 声明命名空间 3. 属性和命名空间 4. 命名空间的应用 阅读详情

简析JAVA的XML编程(java-xml初学者)

作者名字忘了,當時時在網上找的一貼子,以后看到了再補上,對不住了。

个人认为这篇文章通俗易懂,值得推荐。XML作为全球通用的结构化语言,越来越受人们青睐,各种开发平台(比如Microsoft Studio系列、Oracle系列、Inprise Borland系列等)也都把支持XML开发作为宣传口号之一 。由于笔者所从事的电子政务开发较早的引入了XML,所以尝到了许多甜头,在许多项目中利用XML数据交换信息,省去了许多麻烦事,不用制定繁锁的数据格式,利用XML数据易于表达,也利于一线开发者跟踪调试。

        笔者先前也曾发表过相关的文章,比如《简析Delphi中的XML编程》一文,有兴趣的读者可以到Google(http://www.google.com)去搜索一下,有很多媒体转载。今天笔者想探讨的是关于JAVA中的XML编程,希望对正在或想要学习XML编程的新老读者有所帮助。

        在XML应用中,最常用也最实用的莫过于XML文件的读写,所以笔者通过一个简单的XML文件读写来作简要分析。可以在任何文本编辑器中先建立如下结构的XML文件,类似于HTML结构,但XML语义比较严格,起始标记必须配对,比如"〈学生花名册〉"与"〈/学生花名册〉"对应,空格多少可不必在意,但一般都以缩格形式书写,便于阅读。把此文件命名为Input.xml,可以在任何支持XML的浏览器中打开测试一下,如果输入正确,在浏览中可以看到此文件的树形表示结构。如果您还对XML结构感到比较陌生,建议先看看《简析Delphi中的XML编程》一文中关于XML文件的说明。

<?xml version="1.0" encoding="GB2312"?>

<学生花名册>

<学生 性别 = "男">

<姓名>李华</姓名> 

<年龄>14</年龄>

<电话>6287555</电话>

</学生>

<学生 性别 = "男">

<姓名>张三</姓名>

<年龄>16</年龄>

<电话>8273425</电话>

</学生>

</学生花名册>

 

  准备工作做完后,接着就开始写实质性的JAVA代码了。为保存从XML文件读入的信息,需要先建一个简单的Bean来保存学生信息,命名为StudentBean,代码如下所示:

public class StudentBean {

private String sex; //学生性别

private String name; //学生姓名

private int age; //学生年龄

private String phone; //电话号码

 

public void setSex(String s) { sex = s; }

public void setName(String s) { name = s; }

public void setAge(int a) { age = a; }

public void setPhone(String s) { phone = s; }

public String getSex() { return sex; }

public String getName() { return name; }

public int getAge() { return age; } 

public String getPhone() { return phone; }

}

  之后写XML的测试类,笔者把这个类命名为XMLTest,为了读写XML文件,需要导入如下JAVA包,"//"后为注释说明,笔者的环境是JDK 1.3.1_04,在JDK 1.4.0中测试也通过,XML解释器用Apache的Crimson,可以到Apache主页去上载。

import java.io.*; //Java基础包,包含各种IO操作

import java.util.*; //Java基础包,包含各种标准数据结构操作

import javax.xml.parsers.*; //XML解析器接口

import org.w3c.dom.*; //XML的DOM实现

import org.apache.crimson.tree.XmlDocument;//写XML文件要用到

为了保存多个学生信息,还得借助一个集合类(并不是单纯意义上的集合,JAVA中的集合是集合框架的概念,包含向量、列表、哈希表等),这里采用Vector向量类。定义在XMLTest测试类中,命名为student_Vector。然后定义两个方法readXMLFile和writeXMLFile,实现读写操作。代码如下:

private void readXMLFile(String inFile) throws Exception {

//为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

DocumentBuilder db = null;

try {

db = dbf.newDocumentBuilder();

} catch (ParserConfigurationException pce) {

System.err.println(pce); //出异常时输出异常信息,然后退出,下同

System.exit(1);

}

Document doc = null;

try {

doc = db.parse(inFile);

} catch (DOMException dom) {

System.err.println(dom.getMessage());

System.exit(1);

} catch (IOException ioe) {

System.err.println(ioe);

System.exit(1);

}

//下面是解析XML的全过程,比较简单,先取根元素"学生花名册"

Element root = doc.getDocumentElement();

//取"学生"元素列表

NodeList students = root.getElementsByTagName("学生");

for (int i = 0; i < students.getLength(); i++) {

//依次取每个"学生"元素

Element student = (Element) students.item(i);

//创建一个学生的Bean实例

StudentBean studentBean = new StudentBean();

//取学生的性别属性

studentBean.setSex(student.getAttribute("性别"));

//取"姓名"元素,下面类同

NodeList names = student.getElementsByTagName("姓名");

if (names.getLength() == 1) {

Element e = (Element) names.item(0);

Text t = (Text) e.getFirstChild();

studentBean.setName(t.getNodeValue());

}

NodeList ages = student.getElementsByTagName("年龄");

if (ages.getLength() == 1) {

Element e = (Element) ages.item(0);

Text t = (Text) e.getFirstChild();

studentBean.setAge(Integer.parseInt(t.getNodeValue()));

}

 

NodeList phones = student.getElementsByTagName("电话");

if (phones.getLength() == 1) {

Element e = (Element) phones.item(0);

Text t = (Text) e.getFirstChild();

studentBean.setPhone(t.getNodeValue());

}

student_Vector.add(studentBean);

}

}

private void writeXMLFile(String outFile) throws Exception {

//为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

DocumentBuilder db = null;

try {

db = dbf.newDocumentBuilder();

} catch (ParserConfigurationException pce) {

System.err.println(pce);

System.exit(1);

}

Document doc = null;

doc = db.newDocument();

//下面是建立XML文档内容的过程,先建立根元素"学生花名册"

Element root = doc.createElement("学生花名册");

//根元素添加上文档

doc.appendChild(root);

 

//取学生信息的Bean列表

for (int i = 0; i < student_Vector.size(); i++) {

//依次取每个学生的信息

StudentBean studentBean = (StudentBean) student_Vector.get(i);

//建立"学生"元素,添加到根元素

Element student = doc.createElement("学生");

student.setAttribute("性别", studentBean.getSex());

root.appendChild(student);

//建立"姓名"元素,添加到学生下面,下同

Element name = doc.createElement("姓名");

student.appendChild(name);

Text tName = doc.createTextNode(studentBean.getName());

name.appendChild(tName);

Element age = doc.createElement("年龄");

student.appendChild(age);

Text tAge = doc.createTextNode(String.valueOf(studentBean.getAge()));

age.appendChild(tAge);

Element phone = doc.createElement("电话");

student.appendChild(phone);

Text tPhone = doc.createTextNode(studentBean.getPhone());

phone.appendChild(tPhone);

}

//把XML文档输出到指定的文件

FileOutputStream outStream = new FileOutputStream(outFile);

OutputStreamWriter outWriter = new OutputStreamWriter(outStream);

((XmlDocument) doc).write(outWriter, "GB2312");

outWriter.close();

outStream.close(); 

}

最后加入测试主函数,如下:

public static void main(String[] args) throws Exception {

//建立测试实例 

XMLTest xmlTest = new XMLTest();

//初始化向量列表

xmlTest.student_Vector = new Vector();

System.out.println("开始读Input.xml文件");

xmlTest.readXMLFile("Input.xml");

System.out.println("读入完毕,开始写Output.xml文件");

xmlTest.writeXMLFile("Output.xml");

System.out.println("写入完成");

}

  好了,保存好StudentBean和XMLTest,把Input.xml保存到工作目录下。如果您输入很仔细,没敲错字母的话,可以看到"写入完成"了,去瞧瞧Output.xml文件和Input.xml文件是不是一样吧。

Java XML编程从入门到精通 htmltable {th, td {th {pre {简介:《Java XML编程指南》是一本专为Java开发者编写的实用指南,重点讲解了XML在Java环境中的应用,包括数据处理、通信等。书中深入介绍了XML的基础知识、在Java中的解析方法(如DOM、SAX和StAX),并涵盖了使用JAXB进行对象到XML的映射、JAXP的XML处理标准接口、XML Schema和DTD的定义、以及如何创建和消费SOAP服务。 阅读详情

相关推荐

java+xml联合编程简单例子

这是小弟的一次作业,觉得是一个很的学习资源,希望对java+xml联合编程感兴趣的朋友有所帮助。。。。

一文详细讲解JAVA开发中的XML

XML的全称是EXtensible Markup Language , 可扩展标记语言编写XML就是编写标签,与HTML非常类似,扩展.xml良好的人机可读性。

RockyBlogs 4610

java XML 编程指南

java xml 编程技术资料 ,系统介绍 java 如何开发xml,

java xml 编程_Java-XML

1 importjava.io.File;2 importjava.io.StringWriter;34 importjavax.xml.parsers.DocumentBuilder;5 importjavax.xml.parsers.DocumentBuilderFactory;6 importjavax.xml.parsers.ParserConfigurationException;7 i...

weixin_39535349的博客 176

用java技术进行xml编程

IBM在线教程,主要介绍 Java 语言中处理 XML 文档最常用的编程接口。

S32K144驱动TPS929120避坑实录:从原理图设计到PWM调光漏电流的完整解决流程

本文详细解析了S32K144驱动TPS929120在车规LED驱动中的常见问题与解决方案,重点解决了PWM调光漏电流的行业难题。从原理图设计、FlexWire通信到软件调试,提供了一套完整的工程化避坑指南,特别针对车规MCU应用中的温度漂移、地址冲突等痛点给出了实用建议。

weixin_30872157的博客 561

day24XML、工厂模式、装饰模式

XML XML eXtensible Markup Language 可扩展的标记语言 它是一种数据的表示格式,可用来表示结构复杂的数据 常用于数据的存储和传输 XML的几个特点和使用场景 一是纯文本,默认使用UTF-8编码;二是可嵌套; 如果把XML内容存为文件,那么它就是一个XML文件。 XML的使用场景:XML内容经常被当成消息进行网络传输,或者作为配置文件用于存储系统的信息。 XML的语法规则 XML的创建 创建一个xml文件 语法规则: 第一行必须是文档声明 标签(元素)规则 标签由一对尖括号和

xiao_baibai1025的博客 520

双有源桥DC-DC变换器:原理、软开关与移相控制深度解析

隔离型DC-DC变换器是电力电子系统的核心部件,通过高频变压器实现电气隔离与电压匹配,保障系统安全与灵活适配。其工作原理基于功率半导体器件的开关动作,通过调制策略控制能量传输。该技术的核心价值在于实现高效、高功率密度的电能转换,并支持双向能量流动,这对于提升系统整体能效和运行灵活性至关重要。在新能源储能、电动汽车V2G及数据中心供电等场景中,双向能量流成为刚性需求,推动了如双有源桥等先进拓扑的应用。本文聚焦于双有源桥这一实现高效双向隔离变换的“明星”方案,深入剖析其利用移相控制实现软开关的机理。通过分析谐振

weixin_34195142的博客 379

简析JAVA的XML编程(to:初学者们)

 个人认为这篇文章通俗易懂,值得推荐.    XML作为全球通用的结构化语言,越来越受人们青睐,各种开发平台(比如Microsoft Studio系列、Oracle系列、Inprise Borland系列等)也都把支持XML开发作为宣传口号之一 。由于笔者所从事的电子政务开发较早的引入了XML,所以尝到了许多甜头,在许多项目中利用XML数据交换信息,省去了许多麻烦事,不用制定繁锁的数据格式,利用X

键者天行 6598

图灵奖:计算机科学领域的诺贝尔奖

最后,图灵奖也是计算机科学领域发展的重要推动力之一,它促进了该领域的进步和繁荣。图灵奖作为计算机科学领域的诺贝尔奖,不仅是对获奖者卓越贡献的肯定,更是对整个计算机科学领域的推动和激励。在未来的发展中,我们期待看到更多的科学家和团队在图灵奖的激励下不断取得新的突破和创新成果为计算机科学的发展注入新的活力和动力。Vinton G. Cerf和Robert E. Kahn:2004年图灵奖得主,由于他们在互联网方面开创性的工作而获奖,这包括设计和实现了互联网的基础通讯协议TCP/IP,以及在网络方面的卓越领导。

wangnvshibeib的博客 2626

多仓智能订单路由与动态优化方案设计

现在有很多商家会有多个仓库,并分布在不同的城市中,当用户下单后会根据商品库存及订单信息将订单分配到对应的仓库进行发货,如就近原则,本期基于多仓库设计一套订单路由方案,包含核心逻辑、规则优先级和实施方案,适用于多仓协同的订单自动分配场景

14年产品经理老兵,想把自己的经验及总结分享给大家,只讲思路及实操,不讲废话 2481

[转载]简析JAVA的XML编程(to 初学者们)

简析JAVA的XML编程(to 初学者们) 个人认为这篇文章通俗易懂,值得推荐. XML作为全球通用的结构化语言,越来越受人们青睐,各种开发平台(比如 Microsoft Studio系列、Oracle系列、...

congji3817的博客 180

【GAMES201学习笔记】物质点法入门

《GAMES201》 学习笔记

捕鱼维的个人小站 9200

[zt]简析JAVA的XML编程(to:初学者们)

简析JAVA的XML编程(to:初学者们)出处:youkuaiyun.com责任编辑:leelee[04-8-17 10:30] 作者:chensheng913 笔者按:个人认为这篇文章通俗易懂,值得推荐。  XML作为全球通用的结构化语言,越来越受人们青睐,各种开发平台(比如Microsoft Studio系列、Oracle系列、Inprise Borland

Ten0201的专栏 754

Weka学习笔记01:初探Weka世界

下载、安装和启动Weka、Weka数据格式

howard2005的专栏 1471

LangChain与LangGraph核心区别解析

LangChain与LangGraph是当前大语言模型(LLM)应用开发中两个紧密相关且极具影响力的开源框架。它们源于LangChain AI公司,设计哲学互补,旨在解决不同维度的LLM工程化问题,共同构成了构建复杂智能应用的强大工具集。

weixin_35774598的博客 1919

简析JAVA的XML编程(to:初学者们) chensheng913 [原作]

 个人认为这篇文章通俗易懂,值得推荐.    XML作为全球通用的结构化语言,越来越受人们青睐,各种开发平台(比如Microsoft Studio系列、Oracle系列、Inprise Borland系列等)也都把支持XML开发作为宣传口号之一 。由于笔者所从事的电子政务开发较早的引入了XML,所以尝到了许多甜头,在许多项目中利用XML数据交换信息,省去了许多麻烦事,不用制

Inber 1769

关于机器人精度的总结(重复精度和绝对精度区分)

机械臂是工业生产中的重要设备,在焊接码垛 以及 非 接触测量等 领域中有 着重要应 用。然而由于机械臂本体制造中存在机械制造公差装配误差导致的运动学参数误差以及电机转角与关节转角间减速比误差等,导致机械臂存在。因此需要对机械臂进行标定,提高机械臂的绝对定位精度。ABB系列某款机器人精度参数表。

大胡子大叔的专栏 1万+

简析JAVA的XML编程(to:初学者们) chensheng913 [原作]——JAVA夜未眠

XML作为全球通用的结构化语言,越来越受人们青睐,各种开发平台(比如Microsoft Studio系列、Oracle系列、Inprise Borland系列等)也都把支持XML开发作为宣传口号之一 。由于笔者所从事的电子政务开发较早的引入了XML,所以尝到了许多甜头,在许多项目中利用XML数据交换信息,省去了许多麻烦事,不用制定繁锁的数据格式,利用XML数据易于表达,也利于一线开发者跟踪调试。 

为理想而奋斗 837

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: 在oracle数据库中如何插入CLOB值
下一篇: 我寫的JAVA記事本源程序
冯立彬
冯立彬 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域
博客等级 码龄21年 5458粉丝 593原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值