Java 解析 XML文件
个人博客网:https://wushaopei.github.io/ (你想要这里多有)
package com.example.poiutis.xml;
import com.example.poiutis.model.InvoiceOrder;
import org.jdom2.Attribute;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* @ClassName 用JDOM方式读取xml文件
* @Description TODO
* @Author wushaopei
* @Date 2019/8/1 15:14
* @Version 1.0
*/
public class ReadXMLByJDom {
private List<InvoiceOrder> invoiceOrders = null;
private InvoiceOrder invoiceOrder = null;
public List<InvoiceOrder> getInvoiceOrders(String fileName) {
SAXBuilder saxBuilder = new SAXBuilder();
try {
Document document = saxBuilder.build(new FileInputStream(fileName));
//获取根节点bookstore
Element rootElement = document.getRootElement();
//获取根节点的子节点,返回子节点的数组
List<Element> bookList = rootElement.getChildren();
invoiceOrders = new ArrayList<InvoiceOrder>();
for (Element bookElement : bookList) {
invoiceOrder = new InvoiceOrder();
//获取bookElement的属性
List<Attribute> bookAttributes = bookElement.getAttributes();
for (Attribute attribute : bookAttributes) {
if (attribute.getName().equals("id")) {
String id = attribute.getValue(); //System.out.println(id);
invoiceOrder.setId(Integer.parseInt(id));
}
}
//获取bookElement的子节点
List<Element> children = bookElement.getChildren();
for (Element child : children) {
if (child.getName().equals("invoiceOrder")) {
String invoiceOrderid = child.getValue();
invoiceOrder.setInvoiceOrder(invoiceOrderid);
// System.out.println("发票单号"+"---"+invoiceOrderid);
} else if (child.getName().equals("companyName")) {
String companyName = child.getValue();
invoiceOrder.setCompanyName(companyName);
// System.out.println("公司名"+"---"+content);
} else if (child.getName().equals("taxNumber")) {
String taxNumber = child.getValue();
invoiceOrder.setTaxNumber(taxNumber);
// System.out.println("金额"+"---"+content);
} else if (child.getName().equals("accountBank")) {
String accountBank = child.getValue();
invoiceOrder.setAccountBank(accountBank);
// System.out.println("开户行"+"---"+content);
} else if (child.getName().equals("companyAddress")) {
String companyAddress = child.getValue();
invoiceOrder.setCompanyAddress(companyAddress);
// System.out.println("公司地址"+"---"+content);
} else if (child.getName().equals("bankNumber")) {
String bankNumber = child.getValue();
invoiceOrder.setBankNumber(bankNumber);
// System.out.println("账号"+"---"+bankNumber);
} else if (child.getName().equals("companyTelephone")) {
String companyTelephone = child.getValue();
invoiceOrder.setCompanyTelephone(companyTelephone);
// System.out.println("公司电话"+"---"+companyTelephone);
} else if (child.getName().equals("accountName")) {
String accountName = child.getValue();
invoiceOrder.setAccountName(accountName);
// System.out.println("账户类型"+"---"+accountName);
}
}
invoiceOrders.add(invoiceOrder);
invoiceOrder = null;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return invoiceOrders;
}
public static void main(String[] args) {
String fileName = "src/main/resources/invoiceOrder.xml";
List<InvoiceOrder> invoiceOrders= new ReadXMLByJDom().getInvoiceOrders(fileName);
for(InvoiceOrder invoiceOrder : invoiceOrders){
System.out.println(invoiceOrder);
}
}
}
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文件
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文件的方式
在项目里,我们往往会把一些配置信息放到xml文件里,或者各部门间会通过xml文件来交换业务数据,所以有时候我们会遇到“解析xml文件”的需求.一般来讲,有基于DOM树和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 ...
- 【JAVA解析XML文件实现CRUD操作】
一.简介. 1.xml解析技术有两种:dom和sax 2.dom:Document Object Model,即文档对象模型,是W3C组织推荐的解析XML的一种方式. sax:Simple API f ...
随机推荐
- 真香!PySpark整合Apache Hudi实战
1. 准备 Hudi支持Spark-2.x版本,你可以点击如下链接安装Spark,并使用pyspark启动 # pyspark export PYSPARK_PYTHON=$(which python ...
- 设计模式之GOF23策略
策略模式strategy 场景:对不同客户的不同报价策略 如果采用if else不易扩展,不符合开闭原则,可以采用策略模式 策略模式: 对应于解决某一个问题的算法族,允许其中一个算法去解决某一问题,同 ...
- 设计模式之GOF23装饰模式
装饰模式decorator 作用: -动态的为一个对象增加新功能 -装饰模式是一种用于代替继承的技术,无需通过增加子类就能扩展对象的新功能,适用对象的组合关系代替继承关系,更加灵活,同时避免类型体系的 ...
- JDBC04 PreparedStatement
PreparedStatement类 存在预编译,用占位符去填参数(参数索引从1开始算),可以防止SQL注入 try { Class.forName("com.mysql.cj.jdbc.D ...
- [hdu3631]背包或中途相遇法
暴力的背包: #pragma comment(linker, "/STACK:10240000,10240000") #include <iostream> #incl ...
- 页面中js接收tp5 assign方式传过来的数组对象
<script type="text/javascript"> var arr='<?php echo json_encode($nav) ?>'; var ...
- JPA 分页处理
1.要实现jpa分页管理首先得要正确配置jpa环境,在spring环境中的配置如下: 开启注解功能 <bean class="org.springframework.orm.jpa.s ...
- java ->Date、DateFormat、Calendar类
Date类概述 类 Date 表示特定的瞬间,精确到毫秒. 毫秒概念:1000毫秒=1秒 毫秒的0点: System.currentTimeMillis() 相当于Date d = new Date ...
- 使用vue实现购物车功能
页面效果图: html代码: <div class="shop-car" id='car'> <div class="count-custom" ...
- NullPointerException异常没有异常栈打印问题追踪
今天去服务器后台看日志,发现有很多NullPointerException异常.我下意识的找异常栈,想看下到底是哪行代码导致了空指针.但是发现日志中只打印出了如下日志: null java.lang. ...