【文章标题】XML学习笔记(附上思维导图)
【文章作者】曾健生
【作者邮箱】zengjiansheng1@126.com
【作者QQ】190678908
【作者博客】http://blog.csdn.net/newjueqi
【作者声明】欢迎转载文章,但转载请保留文章的完整性以及注明文章的出处。
*******************************************************************************
XML现在被广泛应用于WEB开发,属性它的基本概念和基本操作(增,删,改,查)等具有重要的意义。
1.了解什么是格式良好的xml文档.知道xml的基本语法
a,文档声明必须在第一行
b,XML标记名称区分大小写,标记名称不能包含空格。
c,XML空元素的表示:
1.
2.
d,XML不允许标签交叉,如下是不允许的:
jim
Beijinge,XML属性值要用单引号或双引号包含起来
本文所用的XML:
-
-
Tom
13
tom@sina.com
-
Jerry
23
jerry@sina.com
-
Bob
33
jerry@sina.com
2.利用Dom4j读取xml文档.
2.1得到xml文档代表的Document对象
//1.创建一个SAXReader对象
SAXReader reader=newSAXReader();
//创建一个XML文件的输入流
File f=newFile("E://workspace//dom4j//customers.xml");
//创建一个文档对象
Document doc=reader.read( f );
2.2熟悉Element, Attribute, Node等基本API
//获取根节点
Element root=doc.getRootElement();
//获取根节点下的所有子节点的集合
List e1 =root.elements();
for( Element ele: e1 )
{
/*
通过子节点的方法
*/
//获取属性:ID值
Attribute attr=ele.attribute(0);
System.out.println( attr.getName()+" "+attr.getText());
//获取子节点的名称
System.out.println( ele.getName());
//获取子节点的值
System.out.println( ele.getText());
/*
*通过Attribute获取值
*/
System.out.println( ele.attributeValue("id"));//获取属性
System.out.println( ele.elementText("name"));//获取子节点的姓名值
System.out.println( ele.elementText("age"));//获取子节点的年龄值
}
2.3使用XPath查找指定的节点
几个常用的:
Nodename:选取此节点的所有子节点
/:从根节点选取
//:从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
@:选取属性
//title[@lang='eng']:选取所有title元素,且这些元素拥有值为eng的lang属性
/bookstore/book[price>35.00]:选取所有bookstore元素的book元素,且其中的price元素的值须大于35.00
/*
*使用XPath获取
*/
//获取name的值为"Tom"的节点
//Node node = doc.selectSingleNode( "//customer[name='"+"Tom"+"']" );
//获取id的值为"001"的节点
Node node = doc.selectSingleNode("//customer[@id='"+"002"+"']");
Element el=(Element) node;
System.out.println( el.attributeValue("id"));
3. XML文件的创建,增删操作
(1)XML文件的创建
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//1.创建一个Document对象
Document document = null;
document = DocumentHelper.createDocument();
//2.在Document对象下添加一个根节点: students
Element root = document.addElement("students");
//3.在students节点下添加student节点
Element stuEle_1 = root.addElement("student");
//4.在student节点下添加name, age子节点
stuEle_1.addAttribute("id", "001");
stuEle_1.addElement("name").setText("Mike");
stuEle_1.addElement("age").setText("23");
Element stuEle_2 = root.addElement("student");
stuEle_2.addAttribute("id", "001");
stuEle_2.addElement("name").setText("Rose");
stuEle_2.addElement("age").setText("22");
//5.把1创建好的Document对象,写到students.xml文件中
XMLWriter xmlWriter = null;
FileWriter fileWriter = new FileWriter("students.xml");
OutputFormat format = OutputFormat.createPrettyPrint();
xmlWriter = new XMLWriter(fileWriter, format);
xmlWriter.write(document);
xmlWriter.close();
}
}
生成的XML如下:
-
-
Tom
23
-
Jim
24
(2)增加子节点
A.获取新创建的子节点信息文本信息。
B.通过SAXReader的read( File f )方法获取XML文档的document对象。
C.注意,要现获取根节点,然后在根节点下按层次地用addElement()和addAttribute()增加子节点和属性。
D.用XMLWriter.write(Document doc)方法把修改后的Document对象持久化到XML文件中
E.关闭XMLWriter流。
(3)删除子节点
A.获取XML文档的document对象
B.获取要删除子节点的对象,可使用Xpath方便地获取
C.获取要删除子节点的父节点
D.从document对象中用父节点. remove(子节点)的方法删除子节点
E.用XMLWriter.write(Document doc)方法把修改后的Document对象持久化到XML文件中
F.关闭XMLWriter流。
(4)修改子节点
A.获取XML文档的document对象
B.获取要修改子节点的对象,可使用Xpath方便地获取
C. 对子节点的相关值进行修改,setText(Stringtext)修改节点的值,setAttributeValue(Stringname,Stringvalue)修改属性值
D.用XMLWriter.write(Document doc)方法把修改后的Document对象持久化到XML文件中
E.关闭XMLWriter流。
附近下载:、
http://newjueqi.ys168.com/
附上思维导图: