Java内置的xml读取简易方法
Java内置的xml读取简易方法
最爱肉肉 发表于1年前
Java内置的xml读取简易方法
  • 发表于 1年前
  • 阅读 14
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

xml文件解析(可以读取任意xml文件)

package com.pan.xml;

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

import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;
import java.util.regex.Pattern;

/**
 * Created by pan on 2016/10/4.
 */
public class ReadXML {

    void read(File file) {
        if (file.exists()) {
            //解析xml文件
            try {
                Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file);
                parser(document.getFirstChild());
            } catch (Exception e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("文件不存在!");
        }
    }

    //document遍历
    private void parser(Node root) {
        NodeList childNodes = root.getChildNodes();
        //输出当前节点
        String nodeName = root.getNodeName();
        Pattern pattern = Pattern.compile("#");
        //去除节点属性的值
        if (!pattern.matcher(nodeName).find()) {
            //判断是否为还有子节点
            if (childNodes.getLength() != 1) {
                System.out.println("节点名:" + nodeName);
            } else {
                System.out.println("节点名:" + nodeName + "\t 节点内容:" + root.getTextContent());
            }
        }
        //遍历该节点属性
        NamedNodeMap attributes = root.getAttributes();
        if (attributes != null) {
            for (int i = 0; i < attributes.getLength(); i++) {
                System.out.println("属性名:" + attributes.item(i).getNodeName() + "\t 属性值:" + attributes.item(i).getNodeValue());
            }
        }
        //遍历子节点
        if (childNodes != null) {
            for (int i = 0; i < childNodes.getLength(); i++) {
                Node item = childNodes.item(i);
                //回调
                parser(item);
            }
        }
    }

}

如果知道xml结构,那不需要遍历.速度更快.

测试:

package com.pan.xml;

import java.io.File;

/**
 * Created by pan on 2016/10/4.
 */
public class Main {


    public static void main(String[] args) {
        File file = new File("src/com/pan/xml/test.xml") ;
        //读取xml文件
        new ReadXML().read(file);
    }


}

test.xml

<?xml version="1.0" encoding="UTF-8"?>
<student>
    <name>小明</name>
    <age color="red">15</age>
</student>

测试结果:

节点名:student
节点名:name	 节点内容:小明
节点名:age	 节点内容:15
属性名:color	 属性值:red

Process finished with exit code 0

 

标签: xml
共有 人打赏支持
粉丝 4
博文 44
码字总数 34256
×
最爱肉肉
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: