OAF_文件系列5_实现OAF解析XML文件javax.xml.parsers(案例)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 20150729 Created By BaoXinjian 一、摘要 通过javax.xml.parsers.DocumentBuilder解析从系统系统导入的XML文件 此过程需要用到一些包方法 1.

20150729 Created By BaoXinjian

一、摘要


通过javax.xml.parsers.DocumentBuilder解析从系统系统导入的XML文件

此过程需要用到一些包方法

1. File:获取XML文件

2. DocumentBuilderFactory / DocumentBuilder : 解析XML文件,获取节点结构

3. 节点值获取

3.1 NodeList:获取文件的节点列表

3.2 Node:获取节点列表中的某一个节点

3.3 Element:获取节点中的某一个子元素,并获取值

 

二、实现分析


1. 创建ImportEmployee.java程序

 

2. 实现解析的主要过程

package bxj.oracle.apps.ap.java;

import java.io.File;
import org.w3c.dom.*; import javax.xml.parsers.*; import org.xml.sax.*; import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; public class importEmployeeXML { //获取节点列表 private void importEmployeeXML(String xmlType) { try { //初始化参数,获取文件 DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); String empfilepath = "/u2/VIS/visappl/gavin/employeexml/employeexml.xml"; empfilepath=empfilepath.replace("/", File.separator); //获取更节点 File empxmlfile = new File(empfilepath); Document doc = docBuilder.parse (empxmlfile); doc.getDocumentElement ().normalize (); System.out.println ("Root element of the doc is " + doc.getDocumentElement().getNodeName()); //获取EMPLOYEE节点列表 NodeList listOfEmployees = doc.getElementsByTagName(xmlType); System.out.println("Employee Record Count="+listOfEmployees.getLength()); //循环根节点列表取值 for ( int i=0; i < listOfEmployees.getLength(); i++) { Node empNode = listOfEmployees.item(i); if (empNode.getNodeType() == Node.ELEMENT_NODE) { System.out.println("*************the "+(i+1)+"th node*************"); System.out.println("EMPLOYEEID="+getElementValue(empNode,"EMPLOYEEID")); System.out.println("EMPLOYEENUM="+getElementValue(empNode,"EMPLOYEENUM")); System.out.println("EMPLOYEENAME="+getElementValue(empNode,"EMPLOYEENAME")); System.out.println("EMPLOYEETYPE="+getElementValue(empNode,"EMPLOYEETYPE")); System.out.println("COUNTRY="+getElementValue(empNode,"COUNTRY")); System.out.println("ADDRESS="+getElementValue(empNode,"ADDRESS")); System.out.println("DESCRIPTION="+getElementValue(empNode,"DESCRIPTION")); } } }catch (Exception ex) { ex.printStackTrace(); } } //获取节点的值 private String getElementValue(Node node, String xmlType) { String result = null; if(node.getNodeType() == Node.ELEMENT_NODE){ Element firstPersonElement = (Element) node; NodeList firstNameList = firstPersonElement.getElementsByTagName(xmlType); Element firstNameElement = (Element) firstNameList.item(0); if (firstNameElement == null) { result= ""; } NodeList textFNList = firstNameElement.getChildNodes(); if (textFNList.item(0) == null) { result = ""; } if (((Node)textFNList.item(0)).getNodeValue() == null) { result = ""; } else { result = ((Node)textFNList.item(0)).getNodeValue().trim(); } } return result; } //主程序 public static void main(String[] args){ System.out.println("gavin main"); String xmlType = "EMPLOYEE"; importEmployeeXML importEmployeeXML = new importEmployeeXML(); importEmployeeXML.importEmployeeXML(xmlType); } }

 

三、运行测试


1. 运行测试

 

2. 创建XML测试数据文件

 

3. 通过system.out.println输出的XML信息数据,读取顺利成功,可以通过其他方法更新到VO或者Database中


Thanks and Regards


ERP技术讨论群: 288307890
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建
相关文章
|
27天前
|
自然语言处理 数据处理 Python
python操作和解析ppt文件 | python小知识
本文将带你从零开始,了解PPT解析的工具、工作原理以及常用的基本操作,并提供具体的代码示例和必要的说明【10月更文挑战第4天】
238 60
|
2天前
|
存储 人工智能 自然语言处理
高效档案管理案例介绍:文档内容批量结构化解决方案解析
档案文件内容丰富多样,传统人工管理耗时低效。思通数科AI平台通过自动布局分析、段落与标题检测、表格结构识别、嵌套内容还原及元数据生成等功能,实现档案的高精度分块处理和结构化存储,大幅提升管理和检索效率。某历史档案馆通过该平台完成了500万页档案的数字化,信息检索效率提升60%。
|
1天前
|
存储
文件太大不能拷贝到U盘怎么办?实用解决方案全解析
当我们试图将一个大文件拷贝到U盘时,却突然跳出提示“对于目标文件系统目标文件过大”。这种情况让人感到迷茫,尤其是在急需备份或传输数据的时候。那么,文件太大为什么会无法拷贝到U盘?又该如何解决?本文将详细分析这背后的原因,并提供几个实用的方法,帮助你顺利将文件传输到U盘。
|
11天前
|
Prometheus 监控 Cloud Native
实战经验:成功的DevOps实施案例解析
实战经验:成功的DevOps实施案例解析
26 6
|
14天前
|
安全 Java
Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧
【10月更文挑战第20天】Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧,包括避免在循环外调用wait()、优先使用notifyAll()、确保线程安全及处理InterruptedException等,帮助读者更好地掌握这些方法的应用。
12 1
|
20天前
|
数据安全/隐私保护 流计算 开发者
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。
|
25天前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
27天前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
27天前
|
XML Java 数据格式
手动开发-简单的Spring基于XML配置的程序--源码解析
手动开发-简单的Spring基于XML配置的程序--源码解析
75 0
|
27天前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
60 0

推荐镜像

更多