用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

相关文章

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑

使用Java实现一个解析CURL脚本小工具

《使用Java实现一个解析CURL脚本小工具》文章介绍了如何使用Java实现一个解析CURL脚本的工具,该工具可以将CURL脚本中的Header解析为KVMap结构,获取URL路径、请求类型,解析UR... 目录使用示例实现原理具体实现CurlParserUtilCurlEntityICurlHandler

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT

数据库使用之union、union all、各种join的用法区别解析

《数据库使用之union、unionall、各种join的用法区别解析》:本文主要介绍SQL中的Union和UnionAll的区别,包括去重与否以及使用时的注意事项,还详细解释了Join关键字,... 目录一、Union 和Union All1、区别:2、注意点:3、具体举例二、Join关键字的区别&php

Spring IOC控制反转的实现解析

《SpringIOC控制反转的实现解析》:本文主要介绍SpringIOC控制反转的实现,IOC是Spring的核心思想之一,它通过将对象的创建、依赖注入和生命周期管理交给容器来实现解耦,使开发者... 目录1. IOC的基本概念1.1 什么是IOC1.2 IOC与DI的关系2. IOC的设计目标3. IOC