<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.2.0</version>
</dependency>
<?xml version="1.0" encoding="UTF-8"?>
<root>
<nclogin>
<!--集团主键-->
<pk_group>0001A910000000001U1B</pk_group>
<!--用户主键-->
<pk_user>0001A910000000001U07</pk_user>
<!--用户账户-->
<user_code>admin</user_code>
<user_password>1qaz2wsx!@</user_password>
<!--数据源-->
<datasource>design</datasource>
</nclogin>
<httpparam>
<!--http链接超时时限(毫秒)-->
<connection_timeout>5000</connection_timeout>
<!--http读取超时时限(毫秒)-->
<so_timeout>10000</so_timeout>
</httpparam>
<fssc>
<!--共享悦第三方接口地址-->
<url>http://101.201.238.135:50011</url>
<appKey>kz80tkVzXz2YjmQm</appKey>
<appSecretCode>tlJGItiE4XEeErqAm1gu3mcg7iajWwor</appSecretCode>
<nopsnuserorg>100000</nopsnuserorg>
<!--获取token的方法-->
<tokenmethod>/sys/auth/token/login</tokenmethod>
<vouchermethod>/sys/plugin/fscvoucherheaders/updateVoucherNoByAffairNo</vouchermethod>
</fssc>
</root>
package com.coco;
import cn.hutool.core.date.*;
import cn.hutool.core.io.file.FileWriter;
import cn.hutool.core.util.XmlUtil;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPathConstants;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Date;
import java.util.List;
public class hutool {
public static void main(String[] args) throws IOException, ParserConfigurationException, SAXException, DocumentException {
Document document = XmlUtil.readXML("static/a.xml");
Object value = XmlUtil.getByXPath("//root/fssc/url", document, XPathConstants.STRING);
System.out.println(value);
/*
具体文件和代码的位置是,代码在src/main/java目录下,资源文件在src/main/resources/目录下。
this.getClass().getResourceAsStream(fileName)会从当前类的目录下去找,这个文件如果不和该类在一个目录下,就找不到。
this.getClass().getResourceAsStream("/" + fileName)会从编译后的整个classes目录下去找,maven也会把资源文件打包进classes文件夹,所以可以找到。
this.getClass().getClassLoader().getResourceAsStream(fileName)ClassLoader就是从整个classes文件夹找的,所以前面无需再加/。
*/
System.out.println(hutool.class.getClassLoader().getResource("static/a.xml").getPath());
System.out.println(hutool.class.getResource("/static/a.xml").getPath());
//dom4j解析xml,需导入dom4j依赖
SAXReader saxReader = new SAXReader();
org.dom4j.Document doc = saxReader.read(hutool.class.getClassLoader().getResourceAsStream("static/a.xml"));
//此时根为root
Element rootElement = doc.getRootElement();
System.out.println(rootElement.getName());
List<Element> elements = rootElement.elements();
elements.forEach(x->{
System.out.println(x.getName());
List<Element> elements1 = x.elements();
elements1.forEach(y ->{
System.out.println(y.getName()+":"+y.getText());
});
System.out.println();
});
//此时根为fssc
Element fssc = rootElement.element("fssc");
fssc.elements().forEach(x ->{
System.out.println(x.getName() + "-->" + x.getText());
});
System.out.println();
String appKey = fssc.element("appKey").getText();
System.out.println(appKey);
//dom4j结合XPath解析XML,需导入jaxen依赖
//绝对路径
org.dom4j.Document doc1 = saxReader.read(hutool.class.getResourceAsStream("/static/a.xml"));
Element appSecretCode = (Element) doc1.selectSingleNode("/root/fssc/appSecretCode");
System.out.println(appSecretCode.getText());
//全局搜索
Element tokenmethod = (Element) doc1.selectSingleNode("//tokenmethod");
System.out.println(tokenmethod.getText());
//相对路径
Element element3 = (Element) tokenmethod.selectSingleNode("../url");
System.out.println(element3.getText());
}
}