Java解析XML(4种方法)

article/2025/9/24 11:12:47

这里写图片描述


xml文件

<?xml version="1.0" encoding="utf-8" ?>
<class><student><firstname>cxx1</firstname><lastname>Bob1</lastname><nickname>stars1</nickname><marks>85</marks></student><student rollno="493"><firstname>cxx2</firstname><lastname>Bob2</lastname><nickname>stars2</nickname><marks>85</marks></student><student rollno="593"><firstname>cxx3</firstname><lastname>Bob3</lastname><nickname>stars3</nickname><marks>85</marks></student>
</class>

1.DOM方式

package com.cxx.xml;import org.w3c.dom.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
/*** @Author: cxx* Dom操作xml* @Date: 2018/5/29 20:19*/
public class DomDemo {//用Element方式public static void element(NodeList list){for (int i = 0; i <list.getLength() ; i++) {Element element = (Element) list.item(i);NodeList childNodes = element.getChildNodes();for (int j = 0; j <childNodes.getLength() ; j++) {if (childNodes.item(j).getNodeType()==Node.ELEMENT_NODE) {//获取节点System.out.print(childNodes.item(j).getNodeName() + ":");//获取节点值System.out.println(childNodes.item(j).getFirstChild().getNodeValue());}}}}public static void node(NodeList list){for (int i = 0; i <list.getLength() ; i++) {Node node = list.item(i);NodeList childNodes = node.getChildNodes();for (int j = 0; j <childNodes.getLength() ; j++) {if (childNodes.item(j).getNodeType()==Node.ELEMENT_NODE) {System.out.print(childNodes.item(j).getNodeName() + ":");System.out.println(childNodes.item(j).getFirstChild().getNodeValue());}}}}public static void main(String[] args) {//1.创建DocumentBuilderFactory对象DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//2.创建DocumentBuilder对象try {DocumentBuilder builder = factory.newDocumentBuilder();Document d = builder.parse("src/main/resources/demo.xml");NodeList sList = d.getElementsByTagName("student");//element(sList);node(sList);} catch (Exception e) {e.printStackTrace();}}
}
结果截图

这里写图片描述


2.SAX方式

package com.cxx.xml;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;/*** @Author: cxx* SAX解析DOM* 一行一行  Handler* startElement* endElement* @Date: 2018/5/29 20:03*/
public class SaxDemo {public static void main(String[] args) throws Exception {//1.或去SAXParserFactory实例SAXParserFactory factory = SAXParserFactory.newInstance();//2.获取SAXparser实例SAXParser saxParser = factory.newSAXParser();//创建Handel对象SAXDemoHandel handel = new SAXDemoHandel();saxParser.parse("src/main/resources/demo.xml",handel);}
}class SAXDemoHandel extends DefaultHandler {//遍历xml文件开始标签@Overridepublic void startDocument() throws SAXException {super.startDocument();System.out.println("sax解析开始");}//遍历xml文件结束标签@Overridepublic void endDocument() throws SAXException {super.endDocument();System.out.println("sax解析结束");}@Overridepublic void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {super.startElement(uri, localName, qName, attributes);if (qName.equals("student")){System.out.println("============开始遍历student=============");//System.out.println(attributes.getValue("rollno"));}else if (!qName.equals("student")&&!qName.equals("class")){System.out.print("节点名称:"+qName+"----");}}@Overridepublic void endElement(String uri, String localName, String qName) throws SAXException {super.endElement(uri, localName, qName);if (qName.equals("student")){System.out.println(qName+"遍历结束");System.out.println("============结束遍历student=============");}}@Overridepublic void characters(char[] ch, int start, int length) throws SAXException {super.characters(ch, start, length);String value = new String(ch,start,length).trim();if (!value.equals("")) {System.out.println(value);}}
}
结果截图

这里写图片描述


3.JDOM方式

<!--jdom -->
<dependency><groupId>org.jdom</groupId><artifactId>jdom</artifactId><version>1.1.3</version>
</dependency>
package com.cxx.xml;
import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.List;
/*** @Author: cxx* JDom解析xml* 快速开发XML应用程序。* 是一个开源项目* JDOM主要用来弥补DOM和SAX在实际应用当中的不足。* @Date: 2018/5/30 11:44*/
public class JDomDemo {public static void main(String[] args) throws Exception {//1.创建SAXBuilder对象SAXBuilder saxBuilder = new SAXBuilder();//2.创建输入流InputStream is = new FileInputStream(new File("src/main/resources/demo.xml"));//3.将输入流加载到build中Document document = saxBuilder.build(is);//4.获取根节点Element rootElement = document.getRootElement();//5.获取子节点List<Element> children = rootElement.getChildren();for (Element child : children) {System.out.println("通过rollno获取属性值:"+child.getAttribute("rollno"));List<Attribute> attributes = child.getAttributes();//打印属性for (Attribute attr : attributes) {System.out.println(attr.getName()+":"+attr.getValue());}List<Element> childrenList = child.getChildren();System.out.println("======获取子节点-start======");for (Element o : childrenList) {System.out.println("节点名:"+o.getName()+"---"+"节点值:"+o.getValue());}System.out.println("======获取子节点-end======");}}
}
结果截图

这里写图片描述


4.DOM4J方式

 <!-- dom4j --><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version>
</dependency>
package com.cxx.xml;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;import java.io.File;
import java.util.Iterator;
import java.util.List;/*** @Author: cxx* Dom4j解析xml* @Date: 2018/5/30 12:21*/
public class Dom4JDemo {public static void main(String[] args) throws Exception {//1.创建Reader对象SAXReader reader = new SAXReader();//2.加载xmlDocument document = reader.read(new File("src/main/resources/demo.xml"));//3.获取根节点Element rootElement = document.getRootElement();Iterator iterator = rootElement.elementIterator();while (iterator.hasNext()){Element stu = (Element) iterator.next();List<Attribute> attributes = stu.attributes();System.out.println("======获取属性值======");for (Attribute attribute : attributes) {System.out.println(attribute.getValue());}System.out.println("======遍历子节点======");Iterator iterator1 = stu.elementIterator();while (iterator1.hasNext()){Element stuChild = (Element) iterator1.next();System.out.println("节点名:"+stuChild.getName()+"---节点值:"+stuChild.getStringValue());}}}
}

这里写图片描述


总结

这里写图片描述
这里写图片描述
这里写图片描述


http://chatgpt.dhexx.cn/article/otiR4QwS.shtml

相关文章

混合开发架构|Android工程集成React Native、Flutter、ReactJs

混合开发架构|Android工程集成React Native、Flutter、ReactJs 架构设计说明创建安卓原生工程创建Flutter集成嵌入原生工程 创建React Native解决RN报错问题集成嵌入原生工程RN集成后&#xff0c;启动报错 底部导航栏架构设计原生仿招商银行首页原生Android Socket 即时通讯Rea…

Android MVVM开发框架

MVVM 数据双向绑定&#xff0c;通过数据驱动UI&#xff0c;M提供数据&#xff0c;V视图&#xff0c;VM即数据驱动层 MVP框架图 &#xff08;图片来源于网络&#xff09; 学习MVVM开发框架&#xff0c;要先了解DataBinding&#xff0c;DataBinding 是什么&#xff1f; DataBi…

Android: 开发框架设计

Android 开发框架 Android运用框架的目的不外乎是实现代码的代码解耦、逻辑分类、快速集成 便于维护等目的&#xff1b;Android 开发架构从早期的MVC &#xff0c;到近年到MVP 架构&#xff0c;到最近流行到MVVM 架构。不断到对业务逻辑、代码结构进行分层&#xff0c;便于快速…

安卓框架

http://www.cnblogs.com/jincheng-yangchaofan/articles/7018780.html 框架&#xff1a;提供一定能力的小段程序 一.榜单介绍 排行榜包括四大类&#xff1a; 单一框架&#xff1a;仅提供路由、网络层、UI层、通信层或其他单一功能的框架 混合开发框架&#xff1a;提供开发hy…

安卓应用开发顶级框架大盘点,总有一款适合你

作者 | Slava Vaniukov 译者 | 苏本如&#xff0c;责编 | 夕颜 封图 | CSDN下载自视觉中国 出品 | CSDN&#xff08;ID:CSDNnews&#xff09; 随着软件开发向移动应用的转变&#xff0c;越来越多的企业意识到&#xff0c;移动应用程序对于企业和客户之间建立牢固的联系至关重要…

嵌入式Android底层开发(一)——安卓开发的整体框架与简述

一、Android简介 Android是一种基于Linux内核&#xff08;不包含GUN组件&#xff09;的自由及开放源代码的操作系统&#xff0c;主要使用于移动设备&#xff0c;如智能手机和平板电脑&#xff0c;由美国Google公司和开放手机联盟领导及开发。 主要参数表&#xff1a; 参数上…

Android 框架

背景 我们有一个需求&#xff1a;我们需要查询用户账号信息&#xff0c;用户输入账号&#xff0c;点击按钮可进行查询账号信息&#xff0c;如果查询数据成功&#xff0c;则将数据展示在界面上&#xff1b;如果查询数据失败&#xff0c;则在界面上提升获取数据失败。 假如说我们…

Android - 框架使用

目录 1 Gson解析JSON 1.1 引入依赖 1.2 使用 1.3 安装插件 1.4 Demo 2 下滑刷新&#xff0c;上滑加载新数据 2.1 背景 2.2 引入依赖 2.3 代码实现 3 加载网络图片 3.1 背景 3.2 引入依赖 3.3 代码实现 4 轮播图 4.1 引入依赖 4.2 代码实现 5 网络数据请求 Re…

Android 快速开发框架 集成框架

由于自己经常写项目&#xff0c;没有一个方便开发的一套框架怎么行&#xff0c;所以在日常开发总自己整理了一套&#xff0c;请各位过目&#xff0c;不喜勿喷。一个新项目搭建需要具备的环境:先导入我制作的jar包。添加必要的权限。需要一个Application初始化数据,下面开始调用…

Android应用-开发框架设计

目录 1. &#x1f4c2; 简介 1.1 背景 1.2 专业术语 2. &#x1f531; 总体设计思想 2.1 分层&#xff1a;组件化设计框架 2.2 分类&#xff1a;应用开发架构图 3. ⚛️ 框架详细设计 3.1 组件化框架外形 3.2 业务模块化 3.3 代码编程框架 4. &#x1f4a0; 框架其他…

Android常用框架

1.缓存框架 1.1DiskLruCache&#xff1a;Java实现基于LRU的磁盘缓存&#xff0c;DiskLruCache不是google官方所写&#xff0c;但是得到了官方推荐&#xff0c;DiskLruCache没有编写到SDK中去&#xff0c;如需使用可直接copy这个类到项目中去。使用场景&#xff1a;如“清除…

Android开发框架大全

包括各种快速开发框架、测试框架、系统框架、插件补丁框架、设计模式框架、主题切换框架。 android-tips-tricks&#xff1a; https://github.com/nisrulz/android-tips-tricks Android 开发的一些 Tips 集合 Android-Code-Style&#xff1a; https://github.com/LoranWong/And…

Android开发常用开源框架

Android开源框架系列 Android开源项目 Android开发常用开源框架2 Android开发常用开源框架3 GitHub上最火的Android开源项目,所有开源项目都有详细资料和配套视频 2017年伊始&#xff0c;你需要尝试的25个Android第三方库 Android开发常用第三方平台 免费的计算机编程类中…

Android开发框架模式(MVC、MVP、MVVM)实例解析

Android项目中&#xff0c;尤其是比较大型的项目开发中&#xff0c;模块内部的高聚合和模块间的低耦合性就显得尤为重要了。所以我们一般情况下需要为项目设计一种框架模式&#xff0c;通常情况下我们一般用到的三种MVC、MVP、MVVM。 通过框架模式设计的项目能够极大的提高开发…

LDA主题模型评估方法–Perplexity

在LDA主题模型之后,需要对模型的好坏进行评估,以此依据,判断改进的参数或者算法的建模能力。 Blei先生在论文《Latent Dirichlet Allocation》实验中用的是Perplexity值作为评判标准。 一、Perplexity定义 源于wiki:http://en.wikipedia.org/wiki/Perplexity perplexity是一…

LDA困惑度perplexity的一些个人理解

纠结这个问题很久了&#xff0c;期间主要去了gensim的google论坛&#xff0c;以及在StackOverflow、StackexChange用关键词topic number perplexity搜了下&#xff0c;得到这些很模糊的认识&#xff1a; 1. gensim的log_perplexity()解读&#xff1a; 根据gensim3.8.3的源码&…

NLP基础知识点:困惑度(Perplexity)

本篇内容翻译自Speech and Language Processing. Daniel Jurafsky & James H. Martin. 链接&#xff1a;https://web.stanford.edu/~jurafsky/slp3/ 不愧是自然语言处理领域的圣经&#xff0c;读起来流畅自然&#xff0c;以后还是要多读经典。 困惑度&#xff08;Perplexit…

Python LDA gensim 计算 perplexity

转载自 https://blog.csdn.net/qq_23926575/article/details/79472742 1.LDA主题模型困惑度 这部分参照&#xff1a;LDA主题模型评估方法–Perplexity&#xff0c;不过后面发现这篇文章Perplexity(困惑度)感觉写的更好一点&#xff0c;两篇都是翻译的维基百科。 perplexity是一…

困惑度 (perplexity)

困惑度 (perplexity) 在自然语言处理中,对于一个语言模型,一般用困惑度来衡量它的好坏,困惑度越低,说明语言模型面对一句话感到困惑的程度越低,语言模型就越好。 对于LDA模型,最常用的两个评价方法困惑度(Perplexity)、相似度(Corre)。 其中困惑度可以理解为对于一篇…

Metric评价指标-Perplexity语言模型

欢迎关注知乎&#xff1a; 世界是我改变的 知乎上的原文链接 一. 原理介绍 在研究生实习时候就做过语言模型的任务&#xff0c;当时让求PPL值&#xff0c;当时只是调包&#xff0c;不求甚解&#xff0c;哈哈哈&#xff0c;当时也没想到现在会开发这个评价指标&#xff0c;那现…