Java中解析XML的方法

Java解析XML工具类--(java源码) package com.hexiang.utils; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; /** * 本类是专门解析XML文件的,主要用于为系统读取自己的配置文件时提供最方便的解析操作 * @author HX * */ public class XmlManager { /** * 得到某节点下某个属性的值 * @param element 要获取属性的节点 * @param attributeName 要取值的属性名称 * @return 要获取的属性的值 * @author HX_2010-01-12 */ public static String getAttribute( Element element, String attributeName ) { return element.getAttribute( attributeName ); } /** * 获取指定节点下的文本 * @param element 要获取文本的节点 * @return 指定节点下的文本 * @author HX_2010-01-12 */ public static String getText( Element element ) { return element.getFirstChild().getNodeValue(); } /** * 解析某个xml文件,并在内存中创建DOM树 * @param xmlFile 要解析的XML文件 * @return 解析某个配置文件后的Document * @throws Exception xml文件不存在 */ public static Document parse( String xmlFile ) throws Exception { // 绑定XML文件,建造DOM树 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document domTree = db.parse( xmlFile ); return domTree; } /** * 获得某节点下的某个子节点(指定子节点名称,和某个属性的值) * 即获取parentElement下名字叫childName,并且属性attributeName的值为attributeValue的子结点 * @param parentElement 要获取子节点的那个父节点 * @param childName 要获取的子节点名称 * @param attributeName 要指定的属性名称 * @param attributeValue 要指定的属性的值 * @return 符合条件的子节点 * @throws Exception 子结点不存在或有多个符合条件的子节点 * @author HX_2008-12-01 */ public static Element getChildElement( Element parentElement, String childName, String attributeName, String attributeValue ) throws Exception { NodeList list = parentElement.getElementsByTagName( childName ); int count = 0; Element curElement = null; for ( int i = 0 ; i < list.getLength() ; i ++ ) { Element child = ( Element )list.item( i ); String value = child.getAttribute( attributeName ); if ( true == value.equals( attributeValue ) ) { curElement = 立即下载

XML 简单介绍

在介绍Java中解析 XML 的方法之前前先来介绍下 XML,在我之前学习 HTML 的时候,就听当时的老师介绍过 XML ,它和 HTML 一样是一种标记语言,不同的是它的语法更加灵活,HTML 中的标签是预定义的,而 XML 中的标签则由创建者自己定义,并且每个 XML 标签都是成对出现的 ,通常需要在文件的首行写上 XML 的一个文档头作为开始 其中可以包括版本,编码方式… XML 文档 和HTMl各种节点,节点也可以有属性,但其每一个属性都必须有属性值。
下面是一个 XML 文档内容,并将作为解析XML文档用例。

<!-- XML 中的注释 -->
<!-- 文档头 -->
<?xml version="1.0" encoding="UTF-8"?>
<!-- 根节点 -->
<struts>
    <!-- 子节点、文本及属性 -->
    <action name="login" class="com.tennyson.xml.LoginAction">
        <result name="success">/jsp/homepage.jsp</result>
        <result name="fail">/jsp/showLogin.jsp</result>
    </action>
    <action name="logout" class="com.tennyson.xml.LogoutAction">
        <result name = "success">/jsp/welcome.jsp</result>
        <result name = "error">/jsp/error.jsp</result>
    </action>
</struts>

Java 中解析 XML 的方法

要在 Java 中使用 XML ,首先要解析它,Java 中有四种解析 XML 文档的方法,Java自身提供了两种解析XML 文档的方法:DOM 解析器和 SAX 解析器,也就是说在使用这两种方法时不用再引入jar包二直接使用。另外两种是 JDOM 和 DOM4J, 下面将会分别介绍。

DOM XML

DOM 解析器读入的 XML 文档解析后保留其树形结构,可以获取文档树中的上下文结构、信息,使用也比较简单。

DOM解析器把整个XML文档装载到内存,并解析成一个Document对象。
- 优点:元素与元素之间保留结构关系,故可以进行增删改查操作。
- 缺点:XML文档过大,可能出现内存溢出显现。

要读入一个 XML 文档需要 DocumentBuilder 对象,可以从 DocumentBuilderFactory 中获得该对象,之后即可使用 DocumentBuilder 对象读入文档。


DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

// 获取 DocumentBuilder 对象
DocumentBuilder builder = factory.newDocumentBuilder();
// 读入 XML 文件,获得一个 Document 对象
Document document = builder.parse("struts.xml");

Document 对象保留了文档树的结构,之后的操作与解析器无关。
可以通过 getDocumentElement() 获得文档的根节点,之后通过 getChildNodes() 获取根节点下的子节点,该方法将会返回一个 NodeList 集合

...

// 获取文档根节点
Element struts = document.getDocumentElement();
// 枚举所有子节点
NodeList strutsNodeList = struts.getChildNodes();
for (int i = 0; i < strutsNodeList.getLength(); i++) {
    Node childNode = strutsNodeList.item(i);
    // 只获取子元素,而忽略空白字符
    if (childNode instanceof Element) {
        Element action = (Element) childNode;
    }

}

如果知道了获取的子节点中只有一个文本节点,则可以使用getFirstChild()获取到,并通过getData()获取到节点字符串,对getData()得到的返回值调用trim()方法可以将实际数据前后的空白字符删除掉。

同样可以使用getLastChild()方法得到最后一个子元素,使用getNextSibling()得到下一个兄弟节点

可以调用getAttributes()方法获取节点的所有属性,使用getNodeName()获取属性名getNodeValue()获取属性值,如果知道属性名可以使用getAttribute(“attributeName”)获取该属性值。

...

// 根据属性名获取属性
String attributeValue = action.getAttribute("name");

SAX

尽管使用 DOM 解析XML 文档操作简单,并且易于对 DOM 树增加或删除节点,但使用 DOM 解析器需要处理整个文档,当文档过大,或者你只需要处理文档中某个节点而不关注文档上下文时,使用 DOM 就显得效率低下,且占用内存资源,这是可以使用 SAX 解析器,SAX 解析器解析 XML 文档采用了基于事件的模型,在解析时触发一系列事件。

SAX相较于速度更快,更有效。它逐行扫描文档,一边扫描一边解析。并以事件驱动的方式进行具体解析,每执行一行,都将触发对应的事件。
- 优点:处理速度快,可以处理大文件
- 缺点:只能读,逐行后将释放资源

DOM4J

已解析一下XML文件为例,展示DOM4J的使用

<?xml version = “1.0” encoding=”UTF-8”?>
<products>
    <product id = “p001”>
        <name>华为X80</name>
        <color>白</color>
        <price>2800</price>
    </product>
    <product id = “p002”>
        <name>华为X88</name>
        <color>黑</color>
        <price>2900</price>
    </product>
</products>

dom4j解析代码:

public class Test {

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

        List<Product> products = anaylysisXML("product.xml");

        for (Product product : products) {
            System.out.println(product);
        }
    }

    @SuppressWarnings("unchecked")
    public static List<Product> anaylysisXML(String fileName) throws Exception {
        List<Product> list = new ArrayList<Product>();
        // 使用dom4j解析XML文件,首先要获取SAXReader对象
        SAXReader reader = new SAXReader();
        // 加载XML文件的DOM树
        Document doc = reader.read(fileName);
        // 获取DOM树的根节点
        Element root = doc.getRootElement();
        // 获取根节点下的所有子节点
        List<Element> elements = root.elements();
        // 遍历节点
        for (Element element : elements) {
            Product product = new Product();
            // 根据属性名获取属性值
            Attribute id = element.attribute("id");
            product.setId(id.getValue());

            // 根据子节点名获取当前节点下子节点的文本值
            String name = element.elementText("name");
            String color = element.elementText("color");
            Double price = Double.parseDouble(element.elementText("price"));

            product.setName(name);
            product.setColor(color);
            product.setPrice(price);

            /*
             * //  获取当前节点下的所有子节点
             * List<Element> elemList = element.elements();
             * 
             * // 遍历节点
             * for (Element node : elemList) {
             *  
             *  // 获取当前节点的节点名
             *  String nodeName = node.getName();
             *  // 获取当前节点的文本值(文本节点)
             *  String value = node.getText();
             *  if ("name".equals(nodeName)) {
             *      product.setName(value);
             *  }
             *  
             *  if ("color".equals(nodeName)) {
             *      product.setColor(value);
             *  }
             *  
             *  if ("price".equals(nodeName)) {
             *      product.setPrice(Double.parseDouble(value));
             *  }
             *
             *   
             * }
             */

            list.add(product);
        }

        return list;
    }
}
解析xml工具类 xml工具类 立即下载

相关推荐

【安装文档】TRex流量分析仪保姆级安装指南--基于VMware虚拟机(ubantu18.04@Intel 82545EM

如果之前添加了网卡,这里就可以看见有3个网卡(没添加的现在再加也行),* Active *为Linux内核正在使用的网卡,另外两张是未启用的网卡(注:未启用的网卡在终端中使用ifconfig命令是查不到的,需要先使用ip addr找出网卡,再激活,此时网卡会变为* Active *状态。

lingshengxiyou的博客 2130

详解Java解析XML的四种方法

Java解析XML的四种方法:1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML

qq_50896685的博客 1万+

数据库和BI工程师面试题

 一.数据库 1.Oracle数据库,视图与表的区别?普通视图与物化视图的区别?物化视图的作用? 2.Oracle数据库,有哪几类索引,分别有什么特点? 3.Union与Union All的区别? 4.对游标的理解?游标的分类?使用方法? 5.如何查找和删除表中的重复数据?给出方法或SQL。 6.不借助第三方工具,怎么查看SQL的执行计划? 7.创建索引有哪些需要注意的要点?

web_go_run的专栏 1万+

java解析xml文件的四种方式

System.out.println("======================结束遍历第" + (i + 1) + "本书的内容=================");System.out.println("=================下面开始遍历第" + (i + 1) + "本书的内容=================");System.out.println("======================开始遍历某一本书的内容=================");

黑色人生 4024

Windows安装ros2(Jazzy版本+win10/win11)-1.配置windows终端

更高版本的terminal可能设置里更加丰富, 有默认以管理员身份启动的选项等,可自行配置。打开微软应用商店, 在其中搜索并下载 Terminal 即可(注意别挂梯子)下载并安装, 安装的位置自行替换,建议别放到系统盘中。点击任务栏中的搜索, 输入store。

weixin_48398592的博客 1454

京东技术产品经理面试全记录:从简历投递到一面45分钟实战复盘

本文深度复盘京东技术产品经理面试全流程,从策略准备、思维题拆解、项目阐述到反问谈判,提供了一套可演练的求职策略体系。文章强调该岗位需具备横跨技术与商业的枢纽能力,并通过“QQ分组vs微信标签”等案例,剖析了产品思维与结构化表达在面试中的关键作用,助力候选人将紧张转化为掌控感。

weixin_29275257的博客 630

java之XML解析

XML XML介绍 可扩展标记语言 为何使用XML 数据文件内容没有统一标准,每个厂商都不同 W3C组织就设计了XML统一了数据文件标准,得到了业界广泛认可 XML具有可扩展性,可以支持任何数据 XML还具有统一的API,可以大大简化编程,使用方便 XML格式复杂、臃肿,有些场合已经使用JSON格式代替 XML基本语法 1、标记(tag、标签) 语法: <标记名> 开始标记 &l...

学海无涯 383

MATLAB功率谱函数psd与pwelch的使用

在网上看到 clear; Fs=1000; n=0:1/Fs:1; y=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n)); Nfft=1000; window=hanning(100); noverlap=20; dflag='none'; [Pxx,f]=psd(y,Nfft,Fs,window,noverlap); figure plot(f,10*log10(Pxx)); xlabel('frequency/Hz');ylab

qq_41687938的博客 2万+

Java解析xml

记录工作中遇到的一些问题和解决方式,自己摘抄整理了一下用来巩固,如有不足或有更好的方式 欢迎交流。 java解析xml的话有四种方式,分别为DOM,SAX,DOM4J,JDOM 转载:Java解析XML(4种方法)_蓝星花的博客-优快云博客_java解析xml 这里的话我用的是dom4j Date date = new Date();//用于查看耗时 //InputStream是字节输入流,用来将文件中的数据读取到java程序中 //new FileInputStr...

qq_39019331的博客 9976

华为OD技术面真题 - Python开发 - 2

汇总华为OD技术面八股Python八股,高频技术真题并提供详细解答。

qq_45776114的博客 910

【Bug已解决】This model‘s maximum context length is X tokens. However, you requested Y tokens 解决方案

summary_prompt = "请将以下对话历史压缩成一段简洁摘要,保留关键决策和结论:\n" + format_messages(old_part)return [{"role": "system", "content": f"此前对话摘要:{summary}"}] + recent_part这种方式能在大幅降低 token 消耗的同时,尽量保留任务推进所需的关键上下文,是目前业内做长会话 Agent 最常见的处理方式之一。方案适用场景推荐指数滑动窗口裁剪短任务,对早期历史依赖不强⭐⭐⭐。

一键难忘的博客 1万+

Java 的XML 解析器--详细说明

1. XML 是什么 XML:extensiable markup language 被称作可扩展标记语言,是一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。它被认为是传输标准装置和存储数据,在数据交互还有配置问题方面会比较常用到。 用途: ①:配置文件(例子:Tomcat的web.xml,server.xml......),XML能够非常清晰描述出程序之间的关系 ②:程序间数据的传输,XML的格式是通用的,能够减少交换数据时的复杂性! ③:充当

mike_jun的博客 1019

HDMI接口及其在编程中的应用

在编程中,我们可以使用HDMI接口来控制和管理连接到计算机的HDMI设备。本文将介绍HDMI接口的基本原理以及如何在编程中使用HDMI接口。在编程中,我们可以使用HDMI接口来控制和管理连接到计算机的HDMI设备。本文介绍了HDMI接口的基本原理,并提供了使用Python编程语言和相关库实现HDMI接口应用的示例代码。我们可以使用编程语言提供的音频库来生成和播放音频,并将其通过HDMI接口输出到连接的设备上。我们可以使用编程语言提供的音频库来生成和播放音频,并将其通过HDMI接口输出到连接的设备上。

CodeByte的博客 804

《Java高级-Xml:解析XML 4种方法总结》

Java中用于解析XML的技术很多,主流的有DOM、SAX、JDOM、DOM4j,下文主要介绍这4种解析XML文档技术的使用。<RESULT><VALUE><ADDR>河南省郑州市</ADDR></VALUE><VALUE><ADDR>河南省郑州市二七区</ADDR></VALUE></RESULT>DOM,SAX,JDOM,DOM4J四种方法对比总结1. DOM是基于树的结构,通常需要加载整文档和构造DOM树,然后才能开始工作。a、由于整棵树在内存中,因此可以对xml文档随机访问。

大大大钢琴 1533

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Java解析XML的四种方法详解

Java解析XML的四种方法详解 XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML。本文将详细介绍用Java解析XML的四种方法 XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM

万里晴空 15万+

VC中sqlite的使用

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

论Java加载和解析XML文件的两种方法

对于Java来说,加载和解析XML文件有两种方法: 一种:通过加载整个XML文件生成Document文档,然后解析Document文档内容的树和根。 另一种:利用SAX封装类来逐步解析。 这两种方法各有优点和缺点:第一种由于需要加载整个XML文件生成Document,在解析,所以假如XML文件内容过多、过大,就会造成加载延迟,缓慢(所以此方法只适用于XML文件比较小点 的XML文件);而第二

illusion_Luna的专栏 6562

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【JAVA基础】-JAVA开发中XML解析多种方法

读取并解析XML有上面4种方案,根据不同的应用场合,使用恰当的方法。DOM解析:一次性把XML文档内容加载到内存,构建Document对象。不适合读取大容量的xml文件;Dom解析可以随意读取,甚至往回读取;Dom解析可以实现增删改查;常用解析工具:Dom4jSAX解析:读取一点,解析一点。适合读取大容量的xml文件;从上往下逐点读取,不能往回读;SAX解析通常只读取文件,不能对文件进行操作;

记录总结工作过往 4633

java解析xml方法_解Java解析XML的四种方法是什么呢?

编辑特别推荐:Java加载和实例化以及构造函数关于计算Java程序运行时间Java中执行顺序XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM(Document Object Model),DTD(Document Type Definition),...

weixin_32516009的博客 108

java 解析 xml集合_java解析xml的4种经典方法

1、示例XML为hello.xml,如下:天龙八部金庸201488鹿鼎记201566中文射雕英雄传金庸201644一、DOM(Document Object Model)解析优点:1)允许应用程序对数据和结构做出更改。2)访问是双向的,可以在任何时候再树中上、下导航获取、操作任意部分的数据。缺点:解析XML文档的需要加载整个文档来构造层次结构,消耗内存资源大。应用范围:遍历能力强,常应用于XML文...

weixin_36212959的博客 884

java 解析 xml_转 详解Java解析XML的四种方法

前言:在设计的时候,要常用XML文件的特性,提交程序可扩展(固定参数写在XML文件)、封装(通用类、方法调用的封装)、缓存(极少变动,但逻辑有极其复杂数据分析)等特性。XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML。本文将详细介绍用Java解析XML的四种方法。XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来...

weixin_39839541的博客 188

java解析xml的4种经典方法

java解析xml的4种经典方法 https://www.jianshu.com/p/9b3835299b99 2……比较1)DOM4J性能最好,连Sun的JAXM也在用DOM4J.目前许多开源项目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J.2)JDOM和DOM在性能测试时...

weixin_30326515的博客 305

xml解析list java_详解Java解析XML的四种方法

XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM(Document Object Model),DTD(Document Type Definition),SAX(Simple API for XML),XSD(Xml Schema Definit...

weixin_31129821的博客 1195

Java解析XML的几种方法

Java解析XML有几种方法,本文就讨论是怎么使用这四种方法来解析XML文件,并分析他们的优缺点以及应用场合。1. DOM(Document Object Model)优点: 1. 允许应用程序对数据和结构做出更改。 2. 访问是双向的,可以在任何时候再树中上、下导航获取、操作任意部分的数据。 缺点: 1. 解析XML文档的需要加载整个文档来构造层次结

摸着石头过河 1万+

Java解析xml文件的方法

什么是 XML? XML指可扩展标记语言(EXtensible Markup Language)XML 是一种标记语言,很类似 HTMLXML 的设计宗旨是传输数据,而非显示数据XML 标签没有被预定义。您需要自行定义标签。XML 被设计为具有自我描述性。XML 是 W3C 的推荐标准XML 与 HTML 的主要差异XML 不是 HTML 的替代。 XML 和 HTML 为不同的目的而

mcgwinds的博客 425

java xml解析方法_Java之XML解析的两种方法介绍

Java XML Parsing解析XML有两种(不限于)方法: 一种是基于DOM(Document Object Model)的解析,一种是基于事件(event-based)的SAX(Sample API for XML)解析。DOM-Tree model parser(Object based) (Tree of nodes).-DOM 加载所有XML到内存,然后解析。因此具有内存限制。-DO...

weixin_39701834的博客 88
上一篇: Java 多线程
Tennysons
博客等级 码龄10年 0粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值