不一样的XML处理

StAX处理XML 1.StAX(The Streaming API for XML),是一种利用拉模式解析(pull-parsing)XML文档的API。StAX 把重点放在流上,它提供了两套处理 XML 的 API:基于指针的 API, 把 XML 文档当做一个标记(或事件)流来处理;允许应用程序检查解析器的状态,获得解析的上一个标记的信息,然后再处理下一个标记,依此类推;另一种较为高级的是基于迭代器的 API,把 XML 作为一系列事件对象来处理,每个对象和应用程序交换 XML 结构的一部分。应用程序根据需要定制解 阅读详情

       在以前的xml处理中,本人一直使用dom或者sax,首先解析xml文档,然后把解析出来的数据填入到一个对象中,最后在程序中使用这个对象。程序员就是懒,最近在网上看到了可以直接把XML和Java对象互相转换的工具,觉得非常棒,以下是一个简单的例子。

     

       这种方式叫做xStream,它并不是一种新的解析形式,只是把以前的解析,填装两步封装在一起,让我们觉得更加好用而已,解析的支持默认的是xpp3,当然你也可以使用dom或者其他的,无关紧要。在开始例子之前,需要下载两个支持包:xpp3.jar和xstream-1.4.1.jar,地址分别是:http://www.java2s.com/Code/Jar/STUVWXYZ/Downloadxpp3jar.htm和http://xstream.codehaus.org/download.html

 

       代码:

1.两个辅助类(JavaBean):

package app.xstream;

public class Person {
	private String firstName;
	private String lastName;
	private PhoneNumber phonex;
	private PhoneNumber fax;

	public Person(String firstName, String lastName, PhoneNumber phonex, PhoneNumber fax) {
		this.firstName = firstName;
		this.lastName = lastName;
		this.phonex = phonex;
		this.fax = fax;
	}

	public Person(String firstName, String lastName) {
		this.firstName = firstName;
		this.lastName = lastName;
	}

	public String getFirstName() {
		return firstName;
	}

	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	public String getLastName() {
		return lastName;
	}

	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

	public PhoneNumber getPhonex() {
		return phonex;
	}

	public void setPhonex(PhoneNumber phonex) {
		this.phonex = phonex;
	}

	public PhoneNumber getFax() {
		return fax;
	}

	public void setFax(PhoneNumber fax) {
		this.fax = fax;
	}

}


 

package app.xstream;

public class PhoneNumber {

	private int code;
	private int number;

	public PhoneNumber(int code, int number) {
		super();
		this.code = code;
		this.number = number;
	}

	public int getCode() {
		return code;
	}

	public void setCode(int code) {
		this.code = code;
	}

	public int getNumber() {
		return number;
	}

	public void setNumber(int number) {
		this.number = number;
	}

}


2.测试类:

package app.xstream;

import com.thoughtworks.xstream.XStream;

/**
 * 
 * @author 冯小卫
 * 
 */
public class Main {
	public static void main(String[] args) {
		// XStream可以完成XML和普通的Java对象之间的转换
		XStream xStream = new XStream();
		// 构建Java对象和XML中结构体的联系
		xStream.alias("person", Person.class);

		Person joe = new Person("Joe", "Walnes");
		joe.setPhonex(new PhoneNumber(123, 456));
		joe.setFax(new PhoneNumber(123, 110));
		// 把Java对象转化为XML文件
		String xml = xStream.toXML(joe);
		System.out.println(xml);

		System.out.println("------------------------------------------");

		// 把XML文件解析为Java对象
		Person newJoe = (Person) xStream.fromXML(xml);
		System.out.println(newJoe.getFirstName() + " " + newJoe.getLastName() + " " + newJoe.getPhonex().getCode() + " " + newJoe.getPhonex().getNumber() + " "
				+ newJoe.getFax().getCode() + " " + newJoe.getFax().getNumber());
	}

}


 

总结:

使用xStream.alias(String elementName, Class cls)为任何一个自定义类创建到类到元素的别名(不是必须的,可以自己试一下);

使用xStream.toXML(Object obj)转换对象到XML;

使用xStream.fromXML(String xml)转换XML到对象

 

Python与XML文件处理详解(2):使用xml.dom.minidom模块处理XML 本文摘要: 《Python minidom处理XML与ARXML指南》深入讲解了标准库xml.dom.minidom模块的使用。文章分为四部分:1) 解析DOM模型核心概念及minidom适用场景;2) 详细API教程,包括解析/遍历/修改XML文档;3) 处理复杂XML如ARXML的实践方法;4) 总结minidom优劣势。重点对比了minidom与ElementTree的差异,特别强调minidom在标准兼容性、精确控制方面的优势,同时指出其内存效率低、API冗长等不足。针对ARXML处理,提供了命名空 阅读详情

相关推荐

Python与XML文件处理详解(1):使用xml.etree.ElementTree处理XML

本文介绍了Python处理XML文件的核心技术。首先概述了XML的基本结构和Python三大XML处理库(ElementTree、DOM、SAX)的特性及适用场景。重点讲解了ElementTree模块的使用方法,包括XML文件的解析与遍历、数据提取与修改、创建新文档等操作。文章还涉及XPath查询、命名空间处理等高级技巧,并提供了完整的代码示例。通过本书内容,读者可以掌握使用Python高效处理XML数据的实用技能,适用于从简单配置文件到复杂数据交换的各种场景。

专注于Python自动化脚本开发,分享python开发经验 1006

xmltodict:让你像处理JSON一样处理XML的Python模块

xmltodict是一个可以让你在处理XML时感觉像在处理JSON一样的Python模块。 以下是简单的代码示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

无限大地NLP_空木的专栏 7446

python:XML处理模块

python:XML处理模块

FuncPlotCalc 645

XML Notepad:让XML编辑像聊天一样简单的工具 [特殊字符]

想快速了解这个工具能帮你做什么?这里用最直观的方式展示它的拿手好戏,让你一眼看穿它是否适合自己的工作流。 当你打开XML文件时,智能提示功能会像贴心助手一样自动弹出可能的标签建议,比如输入`<bo`就会显示`<book>`、`<body>`等选项,让你少敲很多键盘 ⌨️。你知道吗?这个功能在处理复杂XML Schema时特别有用,能帮你避免拼写错误。 [![XML智能提示功能展示](https

gitblog_00452的博客 781

新手必看!Cisco Packet Tracer 8.2从安装到完成第一个局域网实验(附常见问题解决)

本文为网络新手提供了Cisco Packet Tracer 8.2的完整入门指南。从官方下载安装、界面熟悉,到核心的拖拽设备、连线、配置IP地址三步操作,手把手教你完成第一个局域网组网实验。文章重点讲解了如何通过Ping命令验证连通性,并附带了连线错误、IP配置不当等常见问题的解决思路,帮助初学者快速上手这款强大的思科模拟器。

android的专栏 867

Python爬虫实战(基础篇)—23—爬取微信小程序<随机目的地旅行>生成随机地址(附GUI版)

爬取微信小程序<随机目的地旅行>生成随机地址

weixin_42636075的博客 1228

xmltodict 终极指南:10个实用技巧让XML处理像JSON一样简单

xmltodict 是一个强大的 Python 模块,它能让 XML 处理变得像操作 JSON 一样简单直观。通过 xmltodict,开发者可以轻松地在 XML 和 Python 字典之间进行转换,极大地降低了 XML 数据处理的复杂度。无论是解析 API 响应、处理配置文件还是转换数据格式,xmltodict 都能成为你高效工作的得力助手。 ## 1. 快速入门:一键安装与基础使用 要开始

gitblog_00369的博客 614

量子密钥分发系统的设计与实现(二):光路子系统初步讨论

本文主要对量子密钥分发系统中的光路子系统方案进行了讨论。

量子领域相关话题 2406

Python 的 xml 模块:XML 数据处理的利器

更多Python学习内容:ipengtao.com在处理和解析 XML 数据时,Python 提供了内置的xml模块,它提供了一种简单而强大的方法来创建、解析和操作 XML 数据。本文将全面介绍 Python 的xml模块,包括如何创建 XML 文档、解析 XML 文档以及其他高级功能的使用方法,并提供丰富的示例代码,可以更好地理解和应用这个强大的工具。xml 模块概述XML(Extens...

GitHub_miao的博客 1140

matlab2021a版本条件下安装spm

SPM (Statistical Parametric Mapping),中文名叫统计参数映射。统计参数映射是指构建和评估空间扩展的统计过程,用于测试关于功能成像数据的假设。这些想法已经在名为SPM的免费开源软件中得到了实例化。SPM软件包用于脑成像数据序列分析。目前的版本可以分析fMRI, PET, SPECT, EEG和MEG。 可能由于matlab版本更新的问题,按照之前教程所写的安装方法会出现错误,踩了一些坑,但好在最终解决了。。。 1、下载链接,如下 SPM12 Software -...

qq_42356925的博客 8405

SAP OBYC自动过账全解析:从BSX到WRX的会计科目配置指南

本文深入解析SAP OBYC自动过账功能,从BSX到WRX的会计科目配置全流程,涵盖评估分组代码、事务码和评估类等核心概念。通过实战案例展示如何实现库存变动到财务过账的自动化流转,提升企业财务数据的准确性和效率。

weixin_29239279的博客 418

深入解析xmltodict:让XML处理变得像JSON一样简单的Python模块终极指南

XML处理在Python开发中一直是一个复杂而繁琐的任务,但xmltodict模块的出现彻底改变了这一现状。这个强大的Python模块让XML处理变得像JSON一样简单直观,为开发者提供了无缝的数据转换体验。无论你是处理API响应、配置文件还是数据交换格式,xmltodict都能显著简化你的工作流程。 ## 🚀 为什么选择xmltodict? 传统的XML处理库如ElementTree或lx

gitblog_00020的博客 806

RK3399平台开发系列讲解(内核入门篇)1.2、如何高效的阅读Linux内核设备驱动

内核开发在很大程度上并不是重新造“轮子”的过程,而是深入理解并尽量复用现有的内核设计框架,然后参照相似的功能模块去添加或改写某项需要的功能。在对内核整体框架以及某些子系统融会贯通以后,我们才有可能站在巨人的肩膀上去改进框架本身,实现自主创新。如果过分强调不必要的“自主创新”,可能会让内核的可维护性变差,最终结果反而得不偿失。 那么此次就分享就围绕如何高效的阅读内核驱动代码:

内核笔记 7341

XML处理指令

“处理指令(PIs)允许文档包含用于应用程序的指令。指令并不是文档字符数据的一部分,但是必须通过应用程序传递”。 处理指令可以用于将信息传递给应用程序。处理指令可以出现在文档任意位置的标记外部。可以出现在序言中,包括文档的类型定义(DTD),文本内容或者文档之后。处理指令,允许文档中包含由应用程序来处理的指令。在XML文档中,有可能会包含一些非XML格式的数据,这些数据XML处理器无法处理,我们就

2353

【数字IC设计】芯片设计中的RDC

在芯片设计中,RDC是的缩写,类似于CDC(clock domain crossing),由于现在SOC芯片是有很多ECUs组成,为了使整个系统能够快速从复位中恢复, 用户希望SOC里面每个ECU模块都可以有自己独立的异步复位信号,这样可以在出问题的时候只复位有错误逻辑的模块,而使其它模块保持正常工作。

qq_40268672的博客 2184

Ambari 安装部署教程(手把手教学)【超级详细】

本文为读者提供了一套超详细的 Apache Ambari 安装部署教程,采用手把手教学方式,适合初学者及大数据运维人员。内容涵盖前期准备、环境配置、Ambari Server 与 Agent 安装、集群初始化配置、常见问题排查等全流程操作,确保用户能够顺利搭建稳定的 Hadoop 大数据平台管理系统。

Five的博客 1万+

scala xml_Scala基本XML处理

scala xml 介绍 几乎每个人都知道XML是什么:XML是一种结构化的,机器可读的文本格式,用于表示信息,可以轻松地检查标签,属性及其相互之间的“语法”(例如,使用DTD)。 这与HTML形成对比,HTML可以包含未关闭的元素(例如,<p> foo <p> bar而不是<p> foo </ p> <p> bar </ p...

1184

lwip-2.0.3

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

qt xml解析与处理

qt xml解析与处理

ckg3824278的博客 1746

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

命令行xml处理_命令行XML处理

就像我不愿说的那样,XML工具还没有达到类似Unix的命令行中可用的文本实用程序的便利程度。 对于面向行的,空格或逗号分隔的文本文件,使用sed , grep , xargs , wc , cut ,pipe和短壳脚本的巧妙组合可以完成的工作非常令人惊讶。 我认为,XML并不是天生就可以抵抗平面文本文件所享受的模块化处理。 XML开发人员只需要从经验中学习将XML工具组成组件的最佳方法。 ...

cuyi7076的博客 1355

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

XML处理

XML作为一种数据交换和信息传递的格式已经十分普及。而随着Web服务日益广泛的应用,现在XML在日常的开发工作中也扮演了愈发重要的角色。这一小节, 我们将就Go语言标准包中的XML相关处理的包进行介绍。 这个小节不会涉及XML规范相关的内容(如需了解相关知识请参考其他文献),而是介绍如何用Go语言来编解码XML文件相关的知识。 假如你是一名运维人员,你为你所管理的所有服务器生成了如下内容的xml的配置文件: <?xml version="1.0" encoding="utf-8"?> &

835

用Python对XML读取和处理

简介XML不是为了方便阅读而设计,而是为了编码为数据。当有一些文本有很多文档,可以用编码的方式使3一些文本便与处理。设计原则 提供不依赖平台的数据转移 方便的编写读写XML程序 数据格式是可验证的 便于人工阅读 为了支持各种应用而设计 练习:提取XML数据 从 xml 中提取关于文章作者的数据 将其添加到列表中,一个作者对应一个条目 名字、姓氏和电子邮箱标签应该直接对应字典关键字 实现代码如下:

Einstellung的博客 2万+

jquery xml_用jQuery处理XML

在你开始前 虽然本教程对于希望学习或提高jQuery和XML处理技能的经验丰富的开发人员很有用,但它还提供了基本DOM脚本概念的实用概述,这些概念甚至可以使最初级JavaScript编码人员也可以快速掌握并掌握它们。本教程的全部范围。 关于本教程 常用缩略语 Ajax:异步JavaScript + XML DOM:文档对象模型 HTML:超文本标记语言 JSON...

cuyi7076的博客 1919

Python - XML 处理

XML是一种可扩展标记语言,用于存储和传输数据。Python提供了多种处理XML的API,包括SAX和DOM两种主要方式。SAX采用事件驱动模型,适合处理大文件;DOM则将整个文档读入内存,形成树状结构,适合随机访问。此外,ElementTree模块提供了更简单轻量的XML处理方式,可以方便地创建、解析和修改XML文档。文章通过电影数据示例演示了如何使用这些API进行XML操作,包括读取、解析和修改XML文件内容。

路漫漫其修远兮,吾将上下而求索 1076
上一篇: 简单的J2EE(四)一些技术选型的建议
下一篇: 简单的J2EE(五)Servlet和Jsp
coding_or_coded
博客等级 码龄16年 216粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值