【记录】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 ...
随机推荐
- jquery ajax实现文件上传
test5.html <html> <head> <meta http-equiv="Content-Type" content="text ...
- vue-cli3取消eslint
遇到这样的空白报错问题,删除这行代码就行
- [CSP-S模拟测试]:购物(柯朵莉树)
题目描述 $visit_world$有一个商店,商店里卖$N$个商品,第$i$个的价格为$a[i]$我们称一个正整数$K$是美妙的,当且仅当我们可以在商店里选购若干个商品,使得价格之和落在区间$[K, ...
- CMAK找不到相关编译器的问题
本机安装了vs2019,在编译vulkansdk所带的samples时,遇到 错误提示: CMake Error at CMakeLists.txt: (project): Generator Vis ...
- linux管理权限
1.linux命令查询 root id 2.切换用户 su - xiaobai 一定要加" - "这个会将你的所有环境变量都带过来 3.root用户切换普通用户不需要输入密码反 ...
- Guarded Suspension Pattern【其他模式】
Guarded Suspension Pattern public class GuardedSuspension { /** * Guarded Suspension Pattern[保护悬挂模式] ...
- LinkedTransferQueue 源码分析
LinkedTransferQueue LinkedTransferQueue 能解决什么问题?什么时候使用 LinkedTransferQueue? 1)LinkedTransferQueue 是基 ...
- 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第2节 反射_11_反射_案例
student定义sleep方法 用反射+配置文件 定义配置文件 src下new file.新建 加载配置文件.Properties里面有一个load方法,可以加载.properties结尾的配置文件 ...
- 测开之路八十六:python操作sqlite
创建sqlite数据库,并创建表和数据 python自带sqlite3库可以创建数据库文件 导入库:import sqlite3 创建游标,指定数据库名字:con = sqlite3.connect( ...
- layui基本使用(动态获取数据,并把需要的数据传到新打开的窗口)
<div class="xiaoxi">\n' + ' <div class="layui-row">\n' + ' <input ...