一个XML文件分为如下几部分内容
文档声明
元素
1.元素语法要求
www.sohu.cn
,简写为:
xml元素命令规则
和
是两个不同的标记:
) 。hello
属性
<Student ID="100">
<Name>TOMName>
Student>
1.属性值用双引号("
)或单引号('
)分隔(如果属性值中有'
,用"
分隔;有"
,用'
分隔)
2. 一个元素可以有多个属性,它的基本格式为:<元素名属性名=“属性值”>
3. 特定的属性名称在同一个元素标记中只能出现一次
4. 属性值不能包括&I字符
注释
- -
>TOM
CDATA、特殊字符
有些内容不想让解析引擎执行,而是当作原始内容处理(即当做普通文本),可以使用CDATA包括起来,CDATA节中的所有字符都会被当作简单文本,而不是XML标记。
1.语法:
<![GDATA[
这里可以把你输入的字符原样显示,不会解析xml
]]>
xml转义字符
转义符 | 符号 |
---|---|
< | < |
> | > |
& | & |
" | " |
' | ' |
格式正规的XML文档
1 xml :表示该文件的类型xml
2.version="1.0"版本
3 encoding="UTF-8”文件编码
4. students: root元素/根元素,程序员自己来定
5. 表示students一个子元素,可以有多个
6. id就是属性name , age, gender是student元素的子元素
7.xml也可以被映射成xml dom树(xml文件是树形结构,有层次感)
-->
<students>
<student>
<name>张三name>
<age>18age>
<gender>男gender>
student>
<student>
<name>李四name>
<age>20age>
<gender>女gender>
student>
students>
1 xml :表示该文件的类型xml
2.version="1.0"版本
3 encoding="UTF-8”文件编码
4. students: root元素/根元素,程序员自己来定
5. 表示students一个子元素,可以有多个
6. id就是属性name , age, gender是student元素的子元素
7.xml也可以被映射成xml dom树(xml文件是树形结构,有层次感)
-->
<students>
<student>
<name>张三name>
<age>18age>
<gender>男gender>
student>
<student>
<name>李四name>
<age>20age>
<gender>女gender>
student>
students>
5.XML元素指XML文件中出现的标签,一个标签分为开始标签和结束标签,一个标签有如下几种书写形式包含标签体:www.sohu.cn
不含标签体的:,简写为:
6.一个标签中也可以嵌套若干子标签。但所有标签必须合理的嵌套,绝对不允许交叉嵌套
<students>
<student id="1'0'1">
<name>张三name>
<name>王五name>
<age>18age>
<gender>男gender>
student>
<student>
<name>李四name>
<age>20age>
<gender>女gender>
student>
students>
<students>
<student>
<name>李四name>
<age>20age>
<gender>女gender>
<code>
function h(obj){
obj.style.behavior='url(#qefault#homepage) ';
var a = obj.setHomePage( ' // www.baidu.com/');
}
]]>
code>
student>
students>
映射成xml dom树后,就可以调用Java dom4j API来使用
上图表示下面的 XML 中的一本书:
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italiantitle>
<author>Giada De Laurentiisauthor>
<year>2005year>
<price>30.00price>
book>
<book category="CHILDREN">
<title lang="en">Harry Pottertitle>
<author>J K. Rowlingauthor>
<year>2005year>
<price>29.99price>
book>
<book category="WEB">
<title lang="en">Learning XMLtitle>
<author>Erik T. Rayauthor>
<year>2003year>
<price>39.95price>
book>
bookstore>
public void loadXML() throws DocumentException {
//得到一个解析器
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src\\students.xml"));
System.out.println(document);
}
document --> rootElement --> content --> elementData(xml所有的属性存放在这里) --> 1(代表一个student节点) --> content --> elementData(student节点中所有属性存放在这里) --> 1(name节点) --> content --> text(找到name的值)
<students>
<student id="01">
<name>小龙女name>
<gender>女gender>
<age>16age>
<resume>古墓派掌门人resume>
student>
<student id="02">
<name>欧阳锋name>
<gender>男gender>
<age>18age>
<resume>白驼山,蛤蟆神功resume>
student>
students>
public void listStus() throws DocumentException {
//得到一个解析器
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src\\students.xml"));
//1. 得到rootElement
Element rootElement = document.getRootElement();
//2. 得到rootElement的student Elements
List<Element> students = rootElement.elements("student");
for (Element student : students) {
//获取Student元素的name Element
Element name = student.element("name");
Element age = student.element("age");
Element resume = student.element("resume");
Element gender = student.element("gender");
System.out.println("学生姓名= " + name.getText() + " "
+ "年龄=" + age.getText() + " "
+ "自我介绍=" + resume.getText() + " "
+ "性别" + gender.getText());
}
}
public void readOne() throws DocumentException {
//得到一个解析器
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src\\students.xml"));
//1. 得到rootElement
Element rootElement = document.getRootElement();
//2.获得第一个学生
Element student = (Element) rootElement.elements("student").get(0);
Element name = student.element("name");
Element age = student.element("age");
Element resume = student.element("resume");
Element gender = student.element("gender");
//3.输出该信息
System.out.println("学生姓名= " + name.getText() + " "
+ "年龄=" + age.getText() + " "
+ "自我介绍=" + resume.getText() + " "
+ "性别" + gender.getText());
//4. 获取student元素的属性
System.out.println("id=" + student.attributeValue("id"));
}