【记录】java解析xml文件
最近新需求要解析xml格式的日志文件,解析完之后数据库落地。
经过度娘搜索,写了demo,现记录如下:
测试XML
<?xml version="1.0" encoding="UTF-8"?>
<stus core-uuid = "4bc7e7f6-14db-11ea-b8e5-9fa46b26ed54" switchname="iZbp1i0fg2swiwfhc4zzqnZ">
<stu id="10086">
<name>张三</name>
<age>18</age>
<address>深圳</address>
</stu>
<stu id="10086">
<name>李四</name>
<name>李五</name>
<name>李六</name>
<age>28</age>
<address>北京</address>
</stu>
</stus>
JAVA类
public class Test{ private static String FilePath = "D:/NewFile.xml"; public static void analysisXml() {
//1. 创建sax读取对象
SAXReader saxReader = new SAXReader();
//2. 指定解析的xml源
Document document = null;
// 通过reader对象的read方法加载books.xml文件,获取docuemnt对象。
// Document document = reader.read(new File("src/res/books.xml"));
try {
// document = saxReader.read(new URL("https://www.w3school.com.cn/example/xmle/note.xml"));
// document = saxReader.read(new ByteArrayInputStream(FilePath.getBytes("UTF-8")));
document = saxReader.read(new File(FilePath));
} catch (Exception e1) {
log.error("解析调用结果异常", e1);
e1.printStackTrace();
}
//3. 得到根元素
Element root = document.getRootElement();
System.out.println("=====父节点=====");
System.out.println("rootgetName--"+root.getName());
System.out.println("rootattributeValue--"+root.attributeValue("core-uuid"));
System.out.println("rootattributeValue--"+root.attributeValue("switchname"));
System.out.println("rootgetPath--"+root.getPath());
System.out.println("rootgetNamespace--"+root.getNamespace());
System.out.println("roottoString--"+root.toString());
System.out.println("=====结束=====");
// 通过element对象的elementIterator方法获取迭代器
Iterator it = root.elementIterator();
// 遍历迭代器,获取根节点中的信息(书籍)
while (it.hasNext()) {
System.out.println("=====开始遍历=====");
Element element = (Element) it.next();
System.out.println("elementName::"+element.getName());
// 获取book的属性名以及 属性值
List<Attribute> attrs = element.attributes();
for (Attribute attr : attrs) {
System.out.println("属性名:" + attr.getName() + "--属性值:"
+ attr.getValue());
}
Iterator itt = element.elementIterator();
while (itt.hasNext()) {
Element bookChild = (Element) itt.next();
System.out.println("节点名:" + bookChild.getName() + "--节点值:" + bookChild.getStringValue());
}
System.out.println("=====结束遍历=====");
}
} public static void main(String[] args) {
analysisXml();
}
}
引用包
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
输出结果
=====父节点=====
rootgetName--stus
rootattributeValue--4bc7e7f6-14db-11ea-b8e5-9fa46b26ed54
rootattributeValue--iZbp1i0fg2swiwfhc4zzqnZ
rootgetPath--/stus
rootgetNamespace--org.dom4j.Namespace@babe [Namespace: prefix mapped to URI ""]
roottoString--org.dom4j.tree.DefaultElement@1700915 [Element: <stus attributes: [org.dom4j.tree.DefaultAttribute@21de60b4 [Attribute: name core-uuid value "4bc7e7f6-14db-11ea-b8e5-9fa46b26ed54"], org.dom4j.tree.DefaultAttribute@c267ef4 [Attribute: name switchname value "iZbp1i0fg2swiwfhc4zzqnZ"]]/>]
=====结束=====
=====开始遍历=====
elementName::stu
属性名:id--属性值:10086
节点名:name--节点值:张三
节点名:age--节点值:18
节点名:address--节点值:深圳
=====结束遍历=====
=====开始遍历=====
elementName::stu
属性名:id--属性值:10086
节点名:name--节点值:李四
节点名:name--节点值:李五
节点名:name--节点值:李六
节点名:age--节点值:28
节点名:address--节点值:北京
=====结束遍历=====
参考地址:https://blog.csdn.net/myme95/article/details/94454324
参考地址:https://www.cnblogs.com/bingru/p/10438020.html
参考地址:https://www.cnblogs.com/zhuawang/p/3371291.html
参考地址:https://blog.csdn.net/testTop/article/details/93527796
【记录】java解析xml文件的更多相关文章
- java解析xml文件并输出
使用java解析xml文件,通过dom4j,代码运行前需先导入dom4j架包. ParseXml类代码如下: import java.io.File; import java.util.ArrayLi ...
- 使用Java解析XML文件或XML字符串的例子
转: 使用Java解析XML文件或XML字符串的例子 2017年09月16日 11:36:18 inter_peng 阅读数:4561 标签: JavaXML-Parserdom4j 更多 个人分类: ...
- Java解析xml文件遇到特殊符号&会出现异常的解决方案
文/朱季谦 在一次Java解析xml文件的开发过程中,使用SAX解析时,出现了这样一个异常信息: Error on line 60 of document : 对实体 "xxx" ...
- Java解析XML文件的方式
在项目里,我们往往会把一些配置信息放到xml文件里,或者各部门间会通过xml文件来交换业务数据,所以有时候我们会遇到“解析xml文件”的需求.一般来讲,有基于DOM树和SAX的两种解析xml文件的方式 ...
- java解析XML文件
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点,同时它也是一个开放源 ...
- JAVA解析XML文件(DOM,SAX,JDOM,DOM4j附代码实现)
1.解析XML主要有四种方式 1.DOM方式解析XML(与平台无关,JAVA提供,一次性加载XML文件内容,形成树结构,不适用于大文件) 2.SAX方式解析XML(基于事件驱动,逐条解析,适用于只处理 ...
- java 解析xml文件案例
package xmlTest; import javax.xml.parsers.*; import org.w3c.dom.*; public class GetXml { public stat ...
- 关于java解析xml文件出现的问题
DOM解析xml文件 问题1:导入javax.xml.parsers.DocumentBuilderFactory出现问题,如图: 解决办法是:由于创建工程时有个默认的jre,重新创建工程改掉就解决了 ...
- java解析XML文件四种方法之引入源文件
1.DOM解析(官方) try { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); Documen ...
随机推荐
- 一本通例题-生日蛋糕——题解<超强深搜剪枝,从无限到有限>
题目传送 显然是道深搜题.由于蛋糕上表面在最底层的半径确认后就确认了,所以搜索时的面积着重看侧面积. 找维度/搜索面临状态/对象:当前体积v,当前外表面面积s,各层的半径r[],各层的高度h[]. 可 ...
- Qt Creator 启动失败 可能的解决办法
用了一段时间Qt Creator莫名的打开失败 重装一遍,仍然不行: 网上搜到解决办法:删除 ~\AppData\Roaming\QtProject文件夹. linux下:~是/home/Your ...
- 使用清华大学提供的 Anaconda 镜像下载 Python 软件包
使用清华大学提供的 Anaconda 镜像下载 Python 软件包 pip install -i http://pypi.tuna.tsinghua.edu.cn/simple tensorflow ...
- qbzt day1 上午
内容提要 模拟,贪心 在讲这些东西之前,我们先来了解一个东西:high level 这个东西大体上就是你做题之前要先想清楚自己要写什么,怎么写,然后再写,不要有一点写一点 1.模拟 模拟算法算是很水的 ...
- 【LeetCode】 两数之和 twoSum
两数之和 (简单) 题目描述 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数: 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 例如: 给定 nums = [2,7,11, ...
- 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第6节 static静态_14_静态static的内存图
输出room的时候,推荐用类名称点的形式 方法区内有,有个独立的空间叫做静态区,专门用来存储静态static的数据 下图红色箭头的部分,全程和对象没有关系.
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第3节 线程同步机制_1_线程安全问题的概述
- python2.7+appium环境搭建
实现android自动化 目录 1.环境准备.安装包准备 2.安装 3.验证环境搭建成功 1.环境准备.安装包准备 第一步:环境准备: java环境 python环境 第二步:准备安装包 Node.j ...
- 百度人脸识别python调用例子
# 首先pip install baidu-aip # SDK文档链接http://ai.baidu.com/docs#/Face-Python-SDK/top import base64 from ...
- Openssl ASN.1 说明一 分享
[引言]ASN.1全称为Abstract Syntax NotationOne,是一种描述数字对象的方法和标准.openssl的编码方法就是基于该标准的,目前,很多其他软件的编码方法也是基于该标准.对 ...