码迷,mamicode.com
首页 > 其他好文 > 详细

XML DTD约束 对xml文件的crud的查询Read Retrieve操作 xml递归遍历

时间:2018-02-27 01:09:00      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:imp   throw   str   getch   ++   eof   utf-8   book   des   

技术分享图片

本地的dtd文档

 技术分享图片

xml中引入dtd文档

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 书架 SYSTEM "book.dtd">
<书架>
    <书>
        <书名>Java就业培训教程</书名>
        <作者>张孝祥</作者>
        <售价>39.00</售价>
    </书>
    <书>
        <书名>JavaScript网页开发</书名>
        <作者>张孝祥</作者>
        <售价>28.00</售价>
    </书>
        <狗></狗>
</书架>

引入后,发现狗狗是不合法的,必须符合dtd约束

根据下面dtd文档生成xml文档

技术分享图片

当中有正则,其中+表示一次或多次  ?表示0次或多次 *表示0次或多次 

dtd的约束无法约束数字等特有表达,只能字符串,所以基本被淘汰

package com.swift.xml;

import java.io.IOException;

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

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class DemoXML {

    public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {

        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document document = builder.parse("src/index.xml");
        NodeList list = document.getElementsByTagName("书");
        Node node = list.item(1);
        // 拿到书的所有文本
        String text = node.getTextContent();
        System.out.println(text);
        // 得到根节点
        Node root = document.getElementsByTagName("书架").item(0);
        // 递归遍历不包括文本
        traverse(root);

    }

    private static void traverse(Node root) {

        if (root instanceof Element) {
            System.out.println(root.getNodeName());
        }
        NodeList list = root.getChildNodes();
        for (int i = 0; i < list.getLength(); i++) {

            Node node = list.item(i);
            traverse(node);

        }
    }

}

查询与递归操作

其中要注意:Element类的包导入有很多选择,这里要选择w3c的

 

XML DTD约束 对xml文件的crud的查询Read Retrieve操作 xml递归遍历

标签:imp   throw   str   getch   ++   eof   utf-8   book   des   

原文地址:https://www.cnblogs.com/qingyundian/p/8476600.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!