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

本地的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递归遍历的更多相关文章
- linux文件夹操作及递归遍历文件夹
文件夹相关函数介绍 //mkdir 函数创建文件夹 #include <sys/stat.h> #include <sys/types.h> int mkdir(const c ...
- xml的约束
一.DTD约束xml 1.约束介绍 由于xml的标签由用户自己定义,因此在开发的时候,每个人都可以根据自己的需求来定义xml标签,这样导致项目中的xml难以维护,因此需要使用一定的规范机制来约束xml ...
- C#操作xml文件:使用XmlDocument 实现读取和写入
XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖于内 ...
- .net操作xml文件(新增.修改,删除,读取) 转
今天有个需求需要操作xml节点.突然见遗忘了许多.上网看了些资料.才整出来.脑袋真不够用.在这里把我找到的资料共享一下.方便以后使用.本文属于网摘/ 1 一.简单介绍2 using System.Xm ...
- delphi操作xml学习笔记 之一 入门必读
Delphi 对XML的支持---TXMLDocument类 Delphi7 支持对XML文档的操作,可以通过TXMLDocument类来实现对XML文档的读写.可以利用TXMLDocum ...
- dom4j操作xml文档
java Dom4j解析XML文件 标签(空格分隔):java进阶 xml文档: <?xml version="1.0" encoding="UTF-8" ...
- ActionScript 3操作XML 详解
AS3引入了E4X ,它是根据ECMAScript标准处理XML 数据的全新机制.这使得程序员在程序中无缝地操作XML.在AS3中可以使用XML字面值将XML数据直接写入代码,该字面值将被自动解析. ...
- C#学习笔记(12)——三种方法操作XML
说明(2017-7-11 16:56:13): 原文地址: C#中常用的几种读取XML文件的方法 XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web. ...
- 【转】C#操作xml
XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖于内 ...
随机推荐
- 使用python将元组转换成列表,并替换其中元素
aa = (1, 2, 3, 4, 5, 6) b = [(x == 5 and 8 or x) for x in aa] z = map(lambda x: 8 if x == 5 else x, ...
- oracle 空值排序,排在最前面或者最后面
1,排在最前面用order by name nulls first; eg:select t.name,t.code from table t where t.code!='1' order by n ...
- 使用dtd--声明实体
1.预定义实体 符号 实体引用 < < > > & & ' ' " " 2.自定义实体 <!ENTITY addre ...
- 链表例题2:链表的倒数第k个节点是多少
解题思想: 1.创建一个结点类(为后面实现链表做基础) 2.创建一个查询倒数元素的方法 3.使用快慢指针的思想(主要的部分) 图中的表示的是查询倒数第k个结点的操作: 创建一个快慢指针后pre(慢指针 ...
- dom父节点
- 特殊的流程控制语句break continue exit
break语句可以结束当前的for.foreach.while.do-while.或者switch的执行. for($i=1; $i<10; $i++) { if($i == 5) { echo ...
- apache管理命令
常用的 httpd.exe -k [install(安装).uninstall(卸载).start(启动).stop(停止).restart(重启)] 说明:要执行命令,需进入到apache安装目录/ ...
- WebSocket Demo
HTML 代码: <body> <h1>WebScoket示例</h1> <br /><br /> <input type=" ...
- 巧用CSS属性visibility与opacity代替鼠标经过的jQuery事件
一直使用jQuery的hover()函数来写鼠标经过事件,这几天发现其他同行直接使用CSS就搞定了.自己在线下也试了试: 当然也并不是没有前提条件,需要配合一些定位属性来使用(position/top ...
- CAD鼠标移动到对象时显示对象内容
//定义事件 Editor ed = doc.Editor; ed.PointMonitor += new PointMonitorEventHandler(ed_Po ...