用SAXReader解析xml文档

2024-04-07 12:08
文章标签 xml 文档 解析 saxreader

本文主要是介绍用SAXReader解析xml文档,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

x5config.xml里面的xml内容

<?xml version="1.0" encoding="utf-8"?>

<x5-config> 
  <business-server>http://127.0.0.1:8080/BusinessServer</business-server>  
  <login-name>system</login-name>
  <password>123456</password>

</x5-config>


java 代码

public String login() throws DocumentException, UnknownHostException {
// 从配置文件读取服务器地址和分配给第三方接口的用户
SAXReader reader = new SAXReader();
Document dom = reader.read(getClass().getResource("/").getPath() + "/../x5config.xml");

String businessServer = dom.selectSingleNode("/x5-config/business-server").getText();
String loginName = dom.selectSingleNode("/x5-config/login-name").getText();
String password = dom.selectSingleNode("/x5-config/password").getText();

// 获得本地IP地址
String localIP = java.net.InetAddress.getLocalHost().getHostAddress();
// 初始化动作引擎
ActionEngine.init(businessServer);
// 登录
String bSessionID = ActionEngine.login(loginName, ActionUtils.md5(password), localIP, null);
// 返回bSessionID
return bSessionID;
}

=======================案例2===================================

使用SAXReader需要导入dom4j-full.jar包。

     dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。

     使用举例:

1.    s.xml内容

[xhtml]  view plain copy
  1. <?xml version="1.0" encoding="GB2312"?>  
  2. <data>  
  3.     <row queryDTO.enterpriseId="gfd" queryDTO.loginName="gdfg" queryDTO.state="0"/>  
  4. </data>  

 

2.解析

[c-sharp]  view plain copy
  1. import java.io.File;  
  2. import java.io.FileInputStream;  
  3. import java.io.FileNotFoundException;  
  4. import java.util.Iterator;  
  5. import java.util.List;  
  6. import org.dom4j.Document;  
  7. import org.dom4j.DocumentException;  
  8. import org.dom4j.Element;  
  9. import org.dom4j.io.SAXReader;  
  10. import org.dom4j.tree.AbstractAttribute;  
  11.   
  12. public class ReadXMLTest {  
  13.       
  14.     public static void main(String[] args){  
  15.         File xmlFile = new File("C:/s.xml");  
  16.         FileInputStream fis = null;  
  17.         try {  
  18.             fis = new FileInputStream(xmlFile);  
  19.         } catch (FileNotFoundException e) {  
  20.             e.printStackTrace();  
  21.             System.err.println("File is not exsit!");  
  22.         }  
  23.           
  24.         SAXReader saxReader = new SAXReader();  
  25.         List rowList = null;  
  26.         try {  
  27.             //生成文档对应实体  
  28.             Document doc = saxReader.read(fis);  
  29.             //获取指定路径下的元素列表,这里指获取所有的data下的row元素  
  30.             rowList = doc.selectNodes("//data/row");  
  31.         } catch (DocumentException e) {  
  32.             e.printStackTrace();  
  33.         }  
  34.           
  35.           
  36.         for(Iterator iter = rowList.iterator();iter.hasNext();){  
  37.             //获得具体的row元素   
  38.             Element element = (Element)iter.next();  
  39.             //获得row元素的所有属性列表  
  40.             List elementList = element.attributes();  
  41.             for(Iterator iter1 = elementList.iterator();iter1.hasNext();){  
  42.                 //将每个属性转化为一个抽象属性,然后获取其名字和值  
  43.                 AbstractAttribute aa = (AbstractAttribute)iter1.next();  
  44.                 System.out.println("Name:"+aa.getName()+";Value:"+aa.getValue());  
  45.             }  
  46.                             //输出:  
  47.                             //Name:queryDTO.enterpriseId;Value:gfd  
  48.                             //Name:queryDTO.loginName;Value:gdfg  
  49.                             //Name:queryDTO.state;Value:0  
  50.             System.out.println(element.getName());  
  51.                             //输出:  
  52.                             //row  
  53.             // 取得row元素的queryDTO.enterpriseId属性的值  
  54.             System.out.println(element.attributeValue("queryDTO.enterpriseId"));  
  55.                             //输出:  
  56.                             //gfd  
  57.             //如果element下有子元素,(类似width="**"),要想获得该子元素的值,可以用如下方法  
  58.             System.out.println(element.elementText("width"));//因为没有,所以输出为null。  
  59.         }  
  60.           
  61.     }  
  62. }  

 


这篇关于用SAXReader解析xml文档的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/882557

相关文章

深度解析Spring Security 中的 SecurityFilterChain核心功能

《深度解析SpringSecurity中的SecurityFilterChain核心功能》SecurityFilterChain通过组件化配置、类型安全路径匹配、多链协同三大特性,重构了Spri... 目录Spring Security 中的SecurityFilterChain深度解析一、Security

全面解析Golang 中的 Gorilla CORS 中间件正确用法

《全面解析Golang中的GorillaCORS中间件正确用法》Golang中使用gorilla/mux路由器配合rs/cors中间件库可以优雅地解决这个问题,然而,很多人刚开始使用时会遇到配... 目录如何让 golang 中的 Gorilla CORS 中间件正确工作一、基础依赖二、错误用法(很多人一开

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

MySQL CTE (Common Table Expressions)示例全解析

《MySQLCTE(CommonTableExpressions)示例全解析》MySQL8.0引入CTE,支持递归查询,可创建临时命名结果集,提升复杂查询的可读性与维护性,适用于层次结构数据处... 目录基本语法CTE 主要特点非递归 CTE简单 CTE 示例多 CTE 示例递归 CTE基本递归 CTE 结

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

Spring Boot 3.x 中 WebClient 示例详解析

《SpringBoot3.x中WebClient示例详解析》SpringBoot3.x中WebClient是响应式HTTP客户端,替代RestTemplate,支持异步非阻塞请求,涵盖GET... 目录Spring Boot 3.x 中 WebClient 全面详解及示例1. WebClient 简介2.

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分