本地的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的

最新文章

  1. 支付宝AR抢红包?前端轻松就破解~
  2. Oracle中PL/SQL的执行部分和各种流程控制
  3. js zTree的用法
  4. highcharts 的使用实例:待写
  5. jdk线程的死锁
  6. Asp.net MVC 实现图片上传剪切
  7. Spring配置数据库固定代码
  8. Android——service重启
  9. nodejs事件机制
  10. swift-switch使用方法
  11. 转:浏览器与WEB服务器工作过程举例
  12. 解决win10 关键错误开始菜单和cortana无法工作 的问题(转-真的成功了)
  13. ffmpeg结构体以及函数介绍(一)
  14. iOS中 UITabBarController中自定义UITabBar
  15. 如何安装zsh,终极shell
  16. Custom partition assignment and migration kafka集群扩充迁移指定partition
  17. Vue + Element UI 实现权限管理系统 前端篇(六):更换皮肤主题
  18. jQuery(十一):jQuery的事件
  19. 如何创建一个基于 .NET Core 3 的 WPF 项目
  20. java中的BigInteger

热门文章

  1. mysql中添加中文存储和显示功能
  2. malloc(0)分配多少内存?(译文)
  3. windows下curl的安装和简单使用
  4. etc
  5. Swift中as as! as?的区别
  6. 画布canvas签名
  7. 【Android 界面效果48】Android-RecyclerView-Item点击事件设置
  8. Springboot开源项目实例整理
  9. Web前端开发规范(一)
  10. 【MATLAB】画信号频谱的子函数