XML DTD约束 对xml文件的crud的查询Read Retrieve操作 xml递归遍历
2024-09-29 02:50:17
本地的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的
最新文章
- 支付宝AR抢红包?前端轻松就破解~
- Oracle中PL/SQL的执行部分和各种流程控制
- js zTree的用法
- highcharts 的使用实例:待写
- jdk线程的死锁
- Asp.net MVC 实现图片上传剪切
- Spring配置数据库固定代码
- Android——service重启
- nodejs事件机制
- swift-switch使用方法
- 转:浏览器与WEB服务器工作过程举例
- 解决win10 关键错误开始菜单和cortana无法工作 的问题(转-真的成功了)
- ffmpeg结构体以及函数介绍(一)
- iOS中 UITabBarController中自定义UITabBar
- 如何安装zsh,终极shell
- Custom partition assignment and migration kafka集群扩充迁移指定partition
- Vue + Element UI 实现权限管理系统 前端篇(六):更换皮肤主题
- jQuery(十一):jQuery的事件
- 如何创建一个基于 .NET Core 3 的 WPF 项目
- java中的BigInteger