Java读取xml配置文件

Posted 1582277142

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java读取xml配置文件相关的知识,希望对你有一定的参考价值。

package test.com;

import java.io.FileInputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class XmlParser {
    public static void main(String[] args) throws Exception {
        getXML("src/parameters.xml", "HolderName1");
        
        //readXmlFile("src/Accounts.xml");
    }

    /**
     * @desc 根据key属性的值,获取节点的值
     * 
     * 
     */
    public static String getXML(String sqlXMLPath, String node) throws Exception {

        DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
        FileInputStream xmlInputStream = new FileInputStream(sqlXMLPath);
        DocumentBuilder builder = builderFactory.newDocumentBuilder();
        Document document = builder.parse(xmlInputStream);

        Node n = document.getChildNodes().item(0);
        NodeList nl = n.getChildNodes();

        for (int i = 0; i < nl.getLength(); i++) {
            if (!nl.item(i).getNodeName().equals("#text")) {
                Element e = (Element) nl.item(i);
                System.out.println(nl.item(i).getNodeName() + "\\t" + e.getAttribute("key") + "\\t" + nl.item(i).getTextContent());
                String key = e.getAttribute("key");
                String value = nl.item(i).getTextContent();
                if (key.equals(node)) {
                    return value;
                }
            }
        }
        return null;
    }

    public static void readXmlFile(String fileName) throws Exception {
        FileInputStream xmlInputStream = new FileInputStream(fileName);

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); // 返回documentBuilderFactory对象
        DocumentBuilder db = dbf.newDocumentBuilder();// 返回db对象用documentBuilderFatory对象获得返回documentBuildr对象
        Document dt = db.parse(xmlInputStream); // 得到一个DOM并返回给document对象
        Element element = dt.getDocumentElement();// 得到一个elment根元素
        System.out.println("根元素:" + element.getNodeName()); // 获得根节点
        NodeList childNodes = element.getChildNodes(); // 获得根元素下的子节点
        for (int i = 0; i < childNodes.getLength(); i++) // 遍历这些子节点
        {
            Node node1 = childNodes.item(i); // childNodes.item(i);
            // 获得每个对应位置i的结点
            if ("Account".equals(node1.getNodeName())) {
                // 如果节点的名称为"Account",则输出Account元素属性type
                System.out.println("\\r\\n找到一个账号. 所属区域:s" + node1.getAttributes().getNamedItem("type").getNodeValue() + "$$");
                NodeList nodeDetail = node1.getChildNodes(); // 获得<Accounts>下的节点
                for (int j = 0; j < nodeDetail.getLength(); j++) { // 遍历<Accounts>下的节点
                    Node detail = nodeDetail.item(j); // 获得<Accounts>元素每一个节点
                    if ("code".equals(detail.getNodeName())) // 输出code
                        System.out.println("卡号: " + detail.getTextContent());
                    else if ("pass".equals(detail.getNodeName())) // 输出pass
                        System.out.println("密码: " + detail.getTextContent());
                    else if ("name".equals(detail.getNodeName())) // 输出name
                        System.out.println("姓名: " + detail.getTextContent());
                    else if ("money".equals(detail.getNodeName())) // 输出money
                        System.out.println("余额: " + detail.getTextContent());
                }
            }
        }

    }

}

 

 

 

 

 

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

<parameters>
<parameter key="HolderName">测试</parameter>
<parameter key="save-holder">1</parameter>
<parameter key="HolderEmail">ceshi@ceshi.com</parameter>
<parameter key="HolderCardType">3</parameter>
<parameter key="HolderCardNo">asdasd</parameter>
<parameter key="HolderSex">1</parameter>
<parameter key="HolderMobile">13333333333</parameter>
</parameters>

 

<?xml version="1.0" encoding="UTF-8"?>
<Accounts>
<Account type="by0003">
<code>100001</code>
<pass>123</pass>
<name>李四</name>
<money>1000000.00</money>
</Account>
<Account type="hz0001">
<code>100002</code>
<pass>123</pass>
<name>张三</name>
<money>1000.00</money>
</Account>
</Accounts>

 

以上是关于Java读取xml配置文件的主要内容,如果未能解决你的问题,请参考以下文章

linux 下java读取配置文件

jar包里面的代码如何读取jar包中的配置文件?

XML配置文件怎么写,都有些啥属性?java代码如何解析XML配置文件?

java 读取配置文件

Java读取xml配置文件

java 在xml文件中怎么获取配置文件中的参数