DTD约束

什么是DTD?

文档类型定义 (document type definition) (约束);

1、 在XML中加入DTD申明
       ①、内部申明:<! DOCTYPE root[]>
       ②、外部申明:<!DOCTYPE 文档根节点 SYSTEM(PUBLIC) “DTD文件名”>
       

2、 元素定义语法(DTD对元素的限制)
        ①、基本语法:<! ELEMENT 元素名称 元素类型 >

        ②、元素分类:
                 EMPTY     空元素      <br/>
                 (#PCDATA)  文本元素   
                 (e1,e2)    混合元素

         ③、 元素限制:
                 ,(顺序)、
                 |(或,多选一)、
                ?(0或1次)、
                 *(0次或多次)、
                 +(1次或多次)

   3、 属性定义语法(DTD对属性的限制)
    基本语法:<!ATTLIST 元素名称 属性名称 属性类型 设置说明>
  
    属性类型:ID/CDATA/ENUM (男|女) "男" IDREF

    设置说明:#REQUIRED(必须)/#IMPLIED(可选)

4、特殊符号转义
 &(逻辑与)      -->  &
    >(大于)     -->  >
    <(小于)     -->  <
    ‘(单引号)     -->  '
    “(双引号)     -->  "
定义三个语句然后获取输入

username=\u6C90\u4ED9\u829D
password=1234
url=www.zking.com
public static void main(String[] args) throws IOException {
		//获取文件输入流
		InputStream is = Demo1.class.getResourceAsStream("demo.properties");
		//创建properties对象
		Properties prop = new Properties();
		//加载文件输入流
		prop.load(is);
		//读取配置文件内容
		String username = prop.getProperty("username");
		String password = prop.getProperty("password");
		Object url = prop.getOrDefault("url", "http://www.baidu.com");
		System.out.println("username="+username+",password="+password);
		System.out.println("url="+url);
	}

 

 dom4j+xpath解析xml文件
    1)xpath类似数据库中的select语句;
    2)Document有节点(Node)组成:元素节点、属性、文本等;
    3)selectNodes()获取节点下所有子节点;
    4)selectSingleNodes()获取单个节点信息;
    5) xpath语法:/(定位路径)、@(获取属性)
    案例:解析student.xml

<?xml version="1.0" encoding="UTF-8"?>
<students>
	<student pid="p01">
		<name>张三</name>
	</student>
	<student pid="p02">
		<name>李四</name>
	</student>	
	<student pid="p03">
		<name>王五</name>
	</student>		
</students>

格式

public static void main(String[] args) throws DocumentException {
		try {
			//获取student。xml文件输入流
			InputStream is = Demo3.class.getResourceAsStream("/student.xml");
			//创建saxreader对象
			SAXReader saxReader = new SAXReader();
			//读取文件输入流并转换document对象
			Document doc = saxReader.read(is);
			//循环遍历
			//1.selectNodess:获取多个节点,返回list
			//2.select SingleNode:获取单个节点
			//3.xpath语法:/代表定位路径
			List<Node> root= doc.selectNodes("/students/student");
			for (Node node : root) {
				//5.将Node节点转换成元素节点Element
				Element elem=(Element) node;
				//6.获取元素节点的属性
				String pid = elem.attributeValue("pid");
				System.out.println("pid="+pid);
				//7.获取student节点下的name节点
				Node nameNode = elem.selectSingleNode("name");
				System.out.println(nameNode.getText());
			}
			//简化:xpath语法
			System.out.println("====================分割线=============================");
			Node node = doc.selectSingleNode("/students/student[@pid='p02']/name");
			System.out.println(node.getText());
		//读取config
		//	Node node = doc.selectSingleNode("/config/action[@path='/regAction']/type");
		//	System.out.println(node.getText());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值