文档章节

Java内置的xml读取简易方法

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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

困扰当前数据中心管理的三大难题

导读 当企业发展到一定程度,或者之前的机房不能满足现在的数据中心使用时,企业会对数据中心进行迁移。那么在数据中心进行迁移的时候会遇到哪些风险呢?针对这些风险我们应该做出怎样的措施来...

问题终结者
2分钟前
0
0
设计模式:工厂方法模式(工厂模式)

工厂方法模式才是真正的工厂模式,前面讲到的静态工厂模式实际上不能说是一种真正意义上的设计模式,只是一种变成习惯。 工厂方法的类图: 这里面涉及到四个种类: 1、抽象产品: Product 2、...

京一
18分钟前
0
0
区块链和数据库,技术到底有何区别?

关于数据库和区块链,总会有很多的困惑。区块链其实是一种数据库,因为他是数字账本,并且在区块的数据结构上存储信息。数据库中存储信息的结构被称为表格。但是,区块链是数据库,数据库可不...

HiBlock
26分钟前
0
0
react native 开发碰到的问题

react-navigation v2 问题 问题: static navigationOptions = ({navigation, navigationOptions}) => ({ headerTitle: ( <Text style={{color:"#fff"}}>我的</Text> ), headerRight: ( <View......

罗培海
33分钟前
0
0
Mac Docker安装流程

久仰Docker大名已久,于是今天趁着有空,尝试了一下Docker 先是从docker的官网上下载下来mac版本的docker安装包,安装很简易,就直接拖图标就好了。 https://www.docker.com/products/docker...

writeademo
41分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部