XML解析工具类

使用Pull解析器的XML工具类设计与实现 XML(可扩展标记语言)是一种用于描述数据的标记语言,它允许开发者定义自己的标签,以便创建结构化的文档。XML在数据交换、配置文件和界面描述中广泛应用,其可读性和可扩展性使之成为理想的数据交换格式。 阅读详情
  1.         由于以前在解析XML的时候,每次都要采用获取XML中的属性名来获取对应的值,每一个bean类都要写一个XML解析器。这将会使代码变得更加冗余,而没办法做到高度抽象。幸亏Java有自身的内省机制,Introspector与反射类似,主要是对Java Bean属性、方法等的一种处理方法。
  2.  
  3. package com.ibm.cn.xml;
  4.  
  5. import java.beans.BeanInfo;
  6. importjava.beans.Introspector;
  7. import java.beans.PropertyDescriptor;
  8. import java.io.File;
  9. importjava.lang.reflect.Method;
  10. import java.util.ArrayList;
  11. import java.util.Iterator;
  12. import java.util.List;
  13.  
  14. import org.dom4j.Document;
  15. import org.dom4j.Element;
  16. importorg.dom4j.io.SAXReader;
  17.  
  18.  
  19. /**
  20.  * XML解析工具类
  21.  * @author javamickey
  22.  * @date 2012-11-01
  23.  * @version 2.0
  24.  */
  25. public class ParsersUtil {
  26.  
  27.  
  28.                 /**
  29.                  * 通过XML文件名,来解析XML对象,此函数只针对XML中存在一个bean值的情况
  30.                  * @paramfileName XML文件名
  31.                  * @param typebean类名
  32.                  * @return 单个bean对象
  33.                  * @throwsException
  34.                  */
  35.                 public static Object parserXMLByFileName(StringfileName, Class<?> type)
  36.                                                 throws Exception {
  37.                                 Class<? extends Object>beanClass = Class.forName(type.getName());
  38.                                 Object bean =beanClass.newInstance();
  39.                                 File inputXml = new File(fileName);
  40.                                 SAXReader saxReader = new SAXReader();
  41.                                 try {
  42.                                                 Document document =saxReader.read(inputXml);
  43.                                                 Element element =document.getRootElement();
  44.                                                 BeanInfo beanInfo =Introspector.getBeanInfo(type);
  45.                                                 PropertyDescriptor[]propertyDescriptors = beanInfo.getPropertyDescriptors();
  46.                                                 for(PropertyDescriptor propertyDescriptor : propertyDescriptors) {
  47.                                                                 StringpropertyName = propertyDescriptor.getName();
  48.                                                                 for(Iterator<?> iterator = element.elementIterator(); iterator.hasNext();) {
  49.                                                                                 ElementemployeeElement = (Element) iterator.next();
  50.                                                                                 if(!propertyName.equals("class")) {
  51.                                                                                                 MethodreadMethod = propertyDescriptor.getWriteMethod();
  52.                                                                                                 Stringvalue = employeeElement.elementText(propertyName);
  53.                                                                                                 System.out.println("propertyName="+ propertyName + "value = " + value);
  54.                                                                                                 if(value != null) {
  55.                                                                                                                 readMethod.invoke(type,value);
  56.                                                                                                 }
  57.                                                                                 }
  58.                                                                 }
  59.                                                 }
  60.                                 } catch (Exception e) {
  61.                                                 e.printStackTrace();
  62.                                 }
  63.                                 return bean;
  64.                 }
  65.  
  66.                 /**
  67.                  * 通过XML文件名,来解析XML对象,此函数针对XML中存在一个或者多个bean值的情况
  68.                  * @paramfileName XML文件名
  69.                  * @param typebean类名
  70.                  * @return 返回一个List<bean>
  71.                  * @throwsException
  72.                  */
  73.                 public static List<Object>parserXMLByFileNameList(String fileName, Class<?> type)
  74.                                                 throws Exception {
  75.                                 Class<? extends Object>beanClass = Class.forName(type.getName());
  76.                                 List<Object> beanList = newArrayList<Object>();
  77.                                 File inputXml = new File(fileName);
  78.                                 SAXReader saxReader = newSAXReader();
  79.                                 try {
  80.                                                 Document document =saxReader.read(inputXml);
  81.                                                 Element element =document.getRootElement();
  82.                                                 BeanInfo beanInfo =Introspector.getBeanInfo(type);
  83.                                                 PropertyDescriptor[]propertyDescriptors = beanInfo.getPropertyDescriptors();
  84.                                                 for(Iterator<?> iterator = element.elementIterator(); iterator.hasNext();) {
  85.                                                                 Objectbean = beanClass.newInstance();
  86.                                                                 ElementemployeeElement = (Element) iterator.next();
  87.                                                                 for(PropertyDescriptor propertyDescriptor : propertyDescriptors) {
  88.                                                                                 StringpropertyName = propertyDescriptor.getName();
  89.                                                                                 if(!propertyName.equals("class")) {
  90.                                                                                                 MethodreadMethod = propertyDescriptor.getWriteMethod();
  91.                                                                                                 Stringvalue = employeeElement.elementText(propertyName);
  92.                                                                                                 System.out.println("propertyName="+ propertyName + "value = " + value);
  93.                                                                                                 if(value != null) {
  94.                                                                                                                 readMethod.invoke(bean,value);
  95.  
  96.                                                                                                 }
  97.                                                                                 }
  98.                                                                 }
  99.                                                                 beanList.add(bean);
  100.                                                 }
  101.  
  102.                                 } catch (Exception e) {
  103.                                                 e.printStackTrace();
  104.  
  105.                                 }
  106.                                 return beanList;
  107.                 }
  108.  
  109. }

Java通用XML解析工具类设计与实现 XML(可扩展标记语言)是一种结构化的数据描述语言,具有良好的可读性和跨平台兼容性,广泛应用于系统间的数据交换、配置文件存储以及Web服务通信中。其通过标签(Tag)组织数据,支持自定义标签结构,使得数据描述更具语义性。本章将从XML的基本语法入手,介绍其文档结构、命名规范、元素嵌套规则等核心概念,并深入剖析其在Java开发中的应用场景,为后续解析技术的学习奠定坚实基础。DOM解析模型是基于树结构的解析方式,其核心在于将整个XML文档构建成一棵内存中的节点树。 阅读详情

相关推荐

matlab液体湿润模拟,【水文模型】01 三水源新安江模型

目录一、概述1.1 流域概况1.2 产流方式论证1.3 设计基本任务1.4 设计原始资料二、新安江模型2.1 流域划分2.2 产汇流计算2.2.1 蒸散发计算2.2.2 产流计算2.2.3 水源划分2.2.4 汇流计算2.3 模型参数2.3.1 参数物理意义2.3.2 参数率定结果2.4 模拟结果2.4.1 精度统计表2.4.2 计算与实测流量过程线比较三、精度统计与误差分析3.1 精度统计3.2...

weixin_34173656的博客 5327

XML篇之XML解析

什么是xml解析XML 解析是指对 XML 文档进行解析,从而获取文档中的数据信息的过程。XML(Extensible Markup Language)是一种用于存储和传输数据的标记语言。它和 HTML 相似,都是用标签来描述文档内容,但 XML 更加灵活和扩展,适用于存储和传输各种结构化数据。常见的 XML 应用包括 RSS、SOAP、Atom、SVG 等。XML 解析器是用于对 XML 文档进行解析的程序。XML 解析的方式一般有两种:DOM 解析和 SAX 解析。

m0_73329959的博客 2165

用Arduino和RC522模块DIY一个NFC门禁卡复制器(附完整代码)

本文详细介绍了如何利用Arduino和RC522模块DIY一个NFC门禁卡复制器,包括硬件连接、软件配置、数据读写技术及完整代码实现。通过本教程,电子爱好者可以深入了解NFC技术,并构建自己的智能门禁系统,适用于家庭安全、办公场所等多种场景。

weixin_33704591的博客 502

浅谈几款XML文档解析工具以及优缺点

<name>博客网站</name><desc>技术学习网站</desc>

Wewe的博客 3765

用ADSP-21569+SigmaStudio打造音频处理系统:从硬件连接到实时调参实战

本文详细介绍了如何利用ADSP-21569 DSP芯片和SigmaStudio图形化编程工具构建高性能音频处理系统。从硬件接口配置、信号流设计到实时参数调试,提供工业级开发中的实用技巧,包括低延迟优化、动态参数插值等关键技术,帮助开发者快速实现专业音频处理方案。

9o8p7i6u5y的博客 979

想学嵌入式但没开发板?试试这个免费的STM32虚拟仿真平台(含LVGL界面教程)

本文介绍如何利用免费的STM32虚拟仿真平台学习嵌入式开发,特别适合预算有限或零硬件基础的学习者。通过详细的LVGL界面开发教程,展示虚拟仿真在嵌入式学习中的高效性和实用性,涵盖环境搭建、代码实现到实机迁移的全流程,助力快速掌握嵌入式开发核心技能。

weixin_29266647的博客 306

Java中操作Xml使用备忘[ Hutool工具类XmlUtil、XStream ]

Java中操作Xml使用备忘

Zhaof_Notes 1万+

不用公网IP,如何在内网高效搭建RustDesk远程控制服务器?基于Windows Server 2019的完整实践

本文详细介绍了在Windows Server 2019上部署RustDesk远程控制服务器的完整实践方案,无需公网IP即可实现内网高效远程控制。从环境准备、基础服务安装到网络与安全配置,提供了零成本的私有化部署指南,适用于企业、校园等内网环境。

weixin_28737073的博客 455

Java 解析xml文件-工具类

Java解析xml文件,对应的Javabean是根据xml中的节点来创建,如SeexmlZbomord、SeexmlIdoc等等。

zcxbd的博客 1543

基于OpenAI Agents构建多智能体工作流:从原理到实战

多智能体系统(Multi-Agent System)是人工智能领域的重要分支,它通过多个智能体(Agent)的协作与交互,解决单一智能体难以处理的复杂任务。其核心原理在于将任务分解、分配与协调,每个智能体具备特定能力,通过通信机制实现信息共享与决策协同。在工程实践中,多智能体框架的价值在于提升任务处理效率、增强系统鲁棒性,并支持模块化开发。典型的应用场景包括自动化工作流编排、复杂问题求解以及人机协同交互。本文以OpenAI Agents SDK为例,深入探讨如何利用其提供的智能体(Agent)、会话(Ses

weixin_28725959的博客 603

什么是 AIDV(AI 定义汽车):从软件定义到智能决策的范式革命

AI定义汽车(AIDV),是指以人工智能(尤其是大模型、深度学习、强化学习)为核心引擎,以车载AI芯片为算力底座,以“数据闭环”为迭代支撑,重构汽车感知、决策、执行全链路,实现“感知智能化、决策自主化、体验个性化、迭代自动化”的新一代智能汽车发展范式。其核心是让汽车从“执行工具”升级为“具备自主学习与智能决策能力的移动智能终端”,核心价值是“车与人的深度协同”与“复杂场景的自主适配”。

getusushu的博客 96

android xml数据解析工具类,android中解析xml文件的工具类XmlUtils

---------------------------------------------------------------------------------------------------------------------------------------------1,xmlUtil工具类package com.example.xmlpaserutil.util; import j...

weixin_42226446的博客 719

华为OD机试真题 新系统-等距二进制判断(C/C++/Py/Java/Js/Go)

华为OD机试 新系统真题【等距二进制判断】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【等距二进制判断】

qq_45776114的博客 1088

java解析xml大文件工具类_xml解析工具类

创建一个xml解析工具类,了解其解析原理。全程使用封装思想。需求:创建一个xml解析工具类,通过用户指定的id值或者class文件路径判断其是否存在,如果存在就返回相对应的对象,如果不存在就返回null;需要用到的知识:【变量定义,数据类型转换,控制语句,循环,自定义方法,类的定义,多态,集合框架,IO流,异常体系,反射,xml解析等知识】工具类封装代码:package cn.yun.xmldom...

weixin_39963830的博客 957

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

visio安装包

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

java 解析xml 工具类_xml转bean+xml解析工具类实现 -- Java

手头正好需要一个xml转bean的工具和xml解析工具,网上实现很多,自己造一次轮子,一整套流程直接复制可用,一分钟实现转换加解析(xml转换使用idea实现,eclipse同样有工具,一搜一大把这里就不赘述了)。本文可转载,标注来源即可。1.xml转xsd1.1样例XML(persons.xml)chinaearthinvestigation1.2 利用idea将persons.xml生成per...

weixin_42502860的博客 1147

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java对xml的生成及解析工具类

1、Jaxb工具类如下. import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import java.io.*; /**...

sundy_fly的博客 1646

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

xml解析的工具类

...

米小豆的博客 788

android xml数据解析工具类,Android开发中解析xml文件XmlUtils工具类与用法示例

本文实例讲述了Android开发中解析xml文件XmlUtils工具类与用法。分享给大家供大家参考,具体如下:1. xmlUtil工具类package com.example.xmlpaserutil.util;import java.io.InputStream;import java.lang.reflect.Field;import java.util.ArrayList;import ja...

weixin_39552204的博客 371

java解析xml工具类

public class XmlUtils { /** * 解析xml数据 * */ public static Map&lt;String,Object&gt; parseXml(byte[] xmlBytes, String charset) { SAXReader reader = new SAXReader(false); ...

疾风剑豪 7497

android中解析xml文件的工具类XmlUtils

--------------------------------------------------------------------------------------------------------------------------------------------- 1,xmlUtil工具类 package com.example.xmlpaserutil.util; imp

huwenzhi1991的专栏 5644

xml解析工具类

import java.io.ByteArrayInputStream; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import ...

LC的博客 317

解析xml的工具类

import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import javax.xml.bin...

做你想做的人,没有时间的限制,只要愿意,什么时候都可以start。 1117

解析xml工具类

java解析xml工具类(SAXReader解析) 需要的jar包 需要的两个jar包 点我下载 http://download.youkuaiyun.com/download/weixin_39549656/10162229 工具类 XmlUtil.java(这个是工具类) public class XmlUtil { //定义解析器和文档对象 private SAXRe

崔崇东的博客 6775
上一篇: 2012年08月2日--Java多线程管理
下一篇: 反序列化对象
Javamickey
博客等级 码龄17年 3粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值