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 ...
随机推荐
- spring学习笔记(四)我对spring中bean生命周期的理解
我相信大部分同学对spring中bean的生命周期都不陌生,但是如果要详细的说出每一个步骤,可能能说出来的也不多,我之前也是这样,前几天调了一下spring的源码,看了一点书,突然一下明朗了,理解了s ...
- Linux Kernel Makefiles Kbuild en
来自Linux kernel docs,顺便整理了一下排版 Linux Kernel Makefiles This document describes the Linux kernel Makefi ...
- HDU-6351 Beautiful Now 全排列暴力
Beautiful Now 题意 给出一个最大为10^9的数字n,以及一个k,你最多交换n中任意两个位置的数字k次,问形成的最大数字和最小数字. 思路 看到这题,我靠这题暴力交换一下,不难啊,咋没人做 ...
- xml(2)
DTD用来验证xml的形式 引入格式:<!DOCTYPE 根元素的名字 SYSTEM "路径">//其中system代表本地路径 <?xml version=&q ...
- c#实现生成PDF的底层方法
在用uwp生成pdf的时候,发展此类类库有限,有的也需要钱,我最后实现pdf的底层方法生成pdf,代码如下 private async void GeneratePdf() { var file = ...
- 分布式锁-Redission-Lock锁的使用与原理
环境准备 添加 Maven 依赖 <dependency> <groupId>org.redisson</groupId> <artifactId>re ...
- Python 的缩进是不是反人类的设计?
前些天,我写了<Python为什么使用缩进来划分代码块?>,文中详细梳理了 Python 采用缩进语法的 8 大原因.我极其喜欢这种简洁优雅的风格,所以对它赞美有加. 然而文章发出去后,非 ...
- debian init
1 bash_completion 默认是没有bash 自动补齐的,比如apt-get install 后面是不会自动补齐的,这个在ubuntu里面是有的,debian 里面默认没有开启 开启方法 ...
- .NetCore对接各大财务软件凭证API——用友系列(1)
一.前言 今天,我们转战用友系列的第一个产品---T+/Tplus.前两篇文章讲解分享的都是金蝶的产品,因为本身公司牵涉的业务有限,后续有金蝶其他产品的API对接业务时,会继续来分享经验. T+的AP ...
- 日志文件的配置----【logback-spring.xml】
一.引入相关包 <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-c ...