1.XML:
(1)文档声明以及编码信息
(2)元素,开始标签+内容+结束标签
(3)属性存在开始标签内,可以自己定义,必须使用双引号包裹,多个属性使用空格隔开,一个标签内不能出现同名属性
(4)CDATA标签:语法<![CDATA[内容(回原样输出)]]>
2.DTD约束:
语法:<!--<!DOCTYPE根元素[ 开始,以]>
如:<!--<!DOCTYPE students[
<!ELEMENT students (student*)>
<!– <!ELEMENT student (name,age,address)>–>
<!ELEMENT student ((name|age|address)+)>
<!ATTLIST student id CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT address (#PCDATA)>
]>-->
?: 元素只能出现 0次或者 1次 最多出现一次
+: 元素出现 1次或者多次 至少出现一次
*: 元素出现0次或者多次 0~n次都可以
|:多个元素只能出现一个
外部语法:<!--<!DOCTYPE 根元素 SYSTEM "外部DTD文件路径">-->
2.
技能点1:DOM4J对底层原始的XML解析器进行了高度封装,正是这种封装简化了XML处理。在DOM4J的org.dom4j.io包下提供了如下几个类:
DOMReader:根据W3C的DOM树创建DOM4J树
SAXReader:基于SAX解析机制解析一份XML文档,并将其转换为DOM4J树
技能点2:获取属性
获取所有属性 List<Attribute> attributes = elem.attributes();
获取指定属性 Attribute attr = elem.attribute("id");
attr.getName()+":"+attr.getValue() 获取属性名和属性值
技能点3:获取元素
Element rootElem = doc.getRootElement(); 获取根元素
List<Element> stuList = rootElem.elements(); 获取所有名称的子元素列表
List<Element> stuList = rootElem.elements("student");获取指定名称子元素列表
String ename = subElem.getName(); 获取元素名称
String etext = subElem.getText(); 获取元素文本
3.
技能点1:如何创建新文档Document:
DocumentFactory:使用了工厂模式
DocumentHelper:底层还是调用了DocumentFactory
技能点2:如何添加子元素
Element stuElem = rootElem.addElement("student");
stuElem.addAttribute("id","003");//id属性
Element stuAgeElem = stuElem.addElement("age");//age子元素
stuAgeElem.setText("30");
技能点3:如何写数据到XML文件
XMLWriter xmlWriter = new XMLWriter(fw,format);
createPrettyPrint:精致美观格式,带缩进、有换行,格式美观
createCompactFormat:紧密压缩格式,无缩进、无换行,不推荐