<?xml version="1.0"?> <!DOCTYPE poem[ <!ELEMENT poem (author,title,content) > <!ELEMENT author (#PCDATA) > <!ELEMENT title (#PCDATA) > <!ELEMENT content (#PCDATA) > ]> <poem> <author>王维</author> <title>鹿踩</title> <content>空山不见人,但闻人语声。返景入深林,复照青苔上。</content> </poem> 将DTD嵌入XML文件中用于验证描述诗集的XML,称为内部DTD文档。4.使用外部DTD验证XML
存储DTD的文件一般以.dtd作为文件的扩展名。 语法: <!DOCTYPE 根元素 SYSTEM "DTD文件路径"> DOCTYPE、SYSTEM是关键字。 示例:<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE poems SYSTEM "poems.dtd"> <poems createYear="2011"> <poem> <title>春晓</title> <author>孟浩然</author> <year>732</year> <content>春眠不觉晓.....</content> </poem> </poems>5.DTD元素
1.DTD元素定义语法:<!ELEMENT NAME CONTENT> ELEMENT是关键字 NAME是元素名称 CONTENT是元素类型 常用的元素类型如下: #PCDATA,可以包含任何字符数据,但是不能在其中包含任何子元素,例如:<!ELEMENT title (#PCDATA)> 纯元素类型,只包含子元素,并且这些子元素外没有文本,例如:<!ELEMENT poems (poem*) > 2.DTD元素中某些符号的用途 符号 用途 示例 示例说明 () 用来给元素分组 (古龙|金庸|梁羽生),(王朔|余杰),毛毛 表示分为三组 | 在列出的对象中选择一个 (男人|女人) 表示"男人"或者"女人"必须出现,并且两者至少选一 , 对象必须按指定的顺序出现 (西瓜,苹果,香蕉) 表示"西瓜""苹果""香蕉"必须出现,并且按这个顺序出现 * 该对象允许出现0到多次 (爱好*) 表示"爱好"可以出现0次到多次 ? 该对象可以出现0次到1次 (菜鸟?) 表示"菜鸟"可以出现0次到1次 + 该对象最少出现1次到多次 (成员+) 表示"成员"必须出现,而且可以出现多次6.DTD属性
1.DTD属性声明语法如下: <!ATTLIST 元素名称 属性名称 属性类型 属性默认值> 2.DTD元素中属性类型的描述如下: 属性类型 说明 CDATA 表示字符数据 ID 表示唯一ID IDREF 表示为另一个元素的id IDREFS 表示其他id的列表 ENTITY 表示一个实体 ENTITLES 表示一个实体列表 3.DTD元素中属性值的描述 值 说明 #REQUIRED 属性值是必须的 #IMPLIED 属性值不是必须的 #FIXED 属性值是固定的4.XML文档解析
1.DOM4J概述
DOM4J是一个易用的,开源的库,可以实现对XML文档的解析。2.使用DOM4J操作XML数据
1.Document对象相关SAXReader reader = new SAXReader(); Document document = reader.read(new File("input.xml")); 2.节点相关 1.获取文档的根元素Element rootElm = document.getRootElement(); 2.取得某节点的单个子节点Element memberElm = root.element("member"); //"member"是节点名 3.取得节点的文字String text = memberElm.getText(); 4.取得某节点下名为"member"的所有子节点并遍历List nodes = rootElm.elements("member"); for(Iterator it = nodes.iterator();it.hasNext();){ Element elm = (Element)it.next(); } 5.对某节点下的所有子节点进行遍历for(Iterator it = root.elementIterator;it.hasNext();){ Element element = (Element)it.next(); } 6.在某节点下添加子节点Element ageElm = newMemberElm.addElement("age"); 7.设置节点文字ageElm.setText("29"); 8.删除某节点parentElm.remove(childElm); //childElm是待删除的节点,parentElm是其父节点。 9.添加一个CDATA节点Element contentElm = infoElm,addElement("content"); contentElm.addCDATA(diary.getContent()); contentElm.getText(); //特别说明:获取街道的CDATA值与获取节点的值是用一个方法 contentElm.clearContent();//清除节点中的内容,CDATA亦可3.属性相关
1.取得某节点下的某属性Element root = document.getRootElement(); Attribute attribute = root.attribute("size"); //属性名name 2.获取属性的文字String text = attribute.getText(); 3.遍历某节点的所有属性Element root = document.getRootElement(); for(Iterator it = root.attributeIterator();it.hasNext()){ Attribute attribute = (Attribute)it.next(); String text = attribute.getText(); System.out.PRintln(text); } 4.设置某节点的属性和文字newMemberElm.addAttribute("name","sitinspring"); 5.设置属性的文字Attribute attribute = root.attribute("name"); attribute.setText("sitinspring");
新闻热点
疑难解答