Xml与输入流路径

 

        <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());
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值