文档章节

Java内置的xml读取简易方法

最爱肉肉
 最爱肉肉
发布于 2016/10/04 15:44
字数 320
阅读 38
收藏 0
xml

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

 

© 著作权归作者所有

共有 人打赏支持
最爱肉肉
粉丝 4
博文 53
码字总数 37271
作品 0
深圳
程序员
私信 提问
10 个最受欢迎的 Java 开发的 CMS 系统

转于:http://www.oschina.net/news/32888/10-most-popular-java-based-cms CMS是Content Management System的缩写,意为"内容管理系统",它具有许多基于模板的优秀设计,可以加快网站开发的...

stamen
2015/08/19
0
0
JAXB Annotation初步使用

JAXB(Java Architecture for XML Binding简称JAXB)允许Java开发人员将Java类映射为XML表示方式。JAXB提供两种主要特性:将一个Java对象序列化为XML,以及反向操作,将XML解析成Java对象。换...

秋风醉了
2014/07/02
0
0
10 个最受欢迎的 Java 开发的 CMS 系统

CMS是Content Management System的缩写,意为"内容管理系统",它具有许多基于模板的优秀设计,可以加快网站开发的速度和减少开发的成本。CMS的功能并不只限于文本处理,它也可以处理图片、F...

oschina
2012/09/14
132.2K
35
【项目管理】软件项目经理须知的 Java 8 安全知识

【译者按】作为软件研发项目的项目经理,只懂项目管理知识是不够的,需要对软件技术本身有基本的了解。Java 是一种主流的系统开发语言,其安全设计对于构建安全的信息系统有至关重要的意义。...

军雷
2017/06/08
0
0
使用 JAXB 框架定制 Web 服务行为

Web 服务概述 从本质上来讲 Web 服务就是对外暴露的并能够通过 Web 进行调用的一组 API,它并不要求服务提供方及调用方的技术实现、编程语言、运行平台甚至操作系统等。也正因为这个特点 We...

红薯
2010/03/24
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

Centos 7 JDK、Tomcat9 安装并配置

Centos 7 JDK、Tomcat9 安装并配置 2017年04月17日 22:44:36 我是一座离岛 阅读数:5707更多 个人分类: webCentOS 版权声明:博主原创文章,转载请注明出处。 https://blog.csdn.net/ngl272...

linjin200
15分钟前
1
0
Spring boot遇到的问题

2018年12月11日 Ver:2.0.2升级到2.1.1文件上传遇到问题 The method setMaxFileSize(String) from the type MultipartConfigFactory is deprecated 是不是就不用设置了?...

夏碌冬藏
16分钟前
1
0
Spark sql操作Hive

这里说的是最简便的方法,通过Spark sql直接操作hive。前提是hive-site.xml等配置文件已经在Spark集群配置好。 val logger = LoggerFactory.getLogger(SevsSpark4.getClass) def main(args:...

守望者之父
17分钟前
1
0
炫酷粒子表白 | 听说女神都想谈恋爱了!

最近听女神说想谈恋爱了,✧(≖ ◡ ≖) 嘿嘿,一定不能放过这个机会,给她来个不一样的表白。 那么咱们就一起来把这个粒子系统玩出花来吧 演示地址: https://es2049.studio/work-show/text...

我的卡
18分钟前
2
0
Spark Streaming管理Kafka偏移量

前言 为了让Spark Streaming消费kafka的数据不丢数据,可以创建Kafka Direct DStream,由Spark Streaming自己管理offset,并不是存到zookeeper。启用Spark Streaming的 checkpoints是存储偏移...

架构师springboot
21分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部