文档章节

Java内置的xml读取简易方法

最爱肉肉
 最爱肉肉
发布于 2016/10/04 15:44
字数 320
阅读 29
收藏 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

 

© 著作权归作者所有

共有 人打赏支持
最爱肉肉
粉丝 3
博文 52
码字总数 35131
作品 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
Hibernate 映射文件配置

对象关系的映射是用一个XML文档来说明的。映射文档可以使用工具来生成,如XDoclet,Middlegen和AndroMDA等。 下面从一个映射的例子开始讲解映射元素,映射文件的代码如下。 <?xml version=...

wangxiaoyi
2012/09/16
0
0
Spring中属性文件properties的读取与使用

实际项目中,通常将一些可配置的定制信息放到属性文件中(如数据库连接信息,邮件发送配置信息等),便于统一配置管理。例中将需配置的属性信息放在属性文件/WEB-INF/configInfo.properties中...

java-苦苦甜甜
2013/07/17
0
0
Java注解是怎么成功上位的?

1、XML大臣 最近这几年,XML大臣的宅邸车水马龙,像什么Spring, Hibernate, MyBatis 等大大小小的官员进京来都要拜访一下,无数的冰敬碳敬悄悄地送入府中, 真可谓红极一时, 正处于人生巅峰...

大数据之路
2014/03/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java并发编程:volatile关键字解析

volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生...

engeue
14分钟前
0
0
通过ajax访问远程天气预报服务

http://www.webxml.com.cn/zh_cn/index.aspx 更改wsdl文件 打开文件将15行,51行,101行去掉 然后把文件复制到c盘 然后在桌面上面就生成了文件 将文件打成jar包 package cn.it.ws.weather;...

江戸川
今天
1
0
聊聊storm的tickTuple

序 本文主要研究一下storm的tickTuple 实例 TickWordCountBolt public class TickWordCountBolt extends BaseBasicBolt { private static final Logger LOGGER = LoggerFactory.getLogg......

go4it
今天
1
0
自动装箱和自动拆箱

自动装箱和自动拆箱 Java 提供了 8 种基本数据类型,每种数据类型都有其对应的包装类型,包装类是面向对象的类,是一种高级的数据类型,可以进行一些比较复杂的操作,它们是引用类型而不再基...

tsmyk0715
今天
2
0
简易审计系统

1、有时候我们需要对线上用户的操作进行记录,可以进行追踪,出现问题追究责任,但是linux自带的history并不会实时的记录(仅仅在内存中,当用户正常退出(exit logout )时才会记录到history文件里...

芬野de博客
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部