xml编写方式一:直接在xml文件中写,语法与html较类似不详细讲
xml编写方式二:通过dom4j来构建document对象,组建树状结构来描述一个xml文档,并写入文件中。
/**
* 创建Document对象
*/
public static Document createDocument(){
return DocumentHelper.createDocument();
}
/**
* 测试写出xml文件
*/
public static void testWriteXml(){
Document doc = createDocument();
//添加根元素
Element root = doc.addElement("project");
//向根元素中添加名为path的子元素
Element ele = root.addElement("path")
//为path元素添加属性id,其值为cp
ele.addAttribute("id","cp");
//添加文本信息
ele.addText("content");
//将xml写入到文件中
XMLWriter writer = new XMLWriter(); //构建相应的xml输出流
FileOutputStream fos = new FileOutputStream("builder.xml");
writer.setOutputStream(fos);
//将Document对象输出到文件中
writer.writer(doc);
writer.close();
}
xml解析
SAX解析方式:
sax相比于dom,sax解析速度更快,更有效,它逐行扫描文档,一边扫描一边解析,相比于dom,sax可以在解析文档的任意时刻停止解析。
优点:解析可以立即开始,没有内存压力
缺点:不能对节点进行修改
DOM解析方式
dom是w3c组织推荐的一种处理xml文档的方式,它会把文档中的所有元素按照它的层次关系解析成一个个的Node对象(节点)。
优点:把xml文件在内存中构造成树形结构,可以遍历和修改节点
缺点:如果文件较大,可能会有内存压力,解析时间会比较长
SAXReader读取xml文档:
SAXReader需要导入dom4j-full.jar包。它是DOM4j的一个核心api,用于读写xml文档
DOM4j是java的xml api,用于读写xml文件。
public static Document readXML(String filename)
throws DocumentException{
try {
//创建SAXReader
SAXReader reader = new SAXReader();
//读取指定文件
Document doc = reader.read(new File(filename));
return doc;
} catch (DocumentException e) {
e.printStackTrace();
throw e;
}
}
try {
Document doc = readXML("build.xml");
//获取根元素
Element root = doc.getRootElement();
} catch (Exception e) {
e.printStackTrace();
}
Element
Element element(String name) 获取当前元素下指定的子元素
List elements() 获取当前元素下的所有子元素
String getName() 用户获取当前元素的名字
String getText() 获取元素的文本节点(其实标记与结束标记之间的文本)
Attribute attribute(String name) 获取当前元素的指定名字的属性
Attribute
String getName() 获取属性的名字
String getValue() 获取属性的值
XPATH
XPath是一门在xml文档中查找信息的语言,它可以根据路径,属性甚至是条件进行节点的检索。
路径表达式语法:
斜杠(/)作为路径内部的分隔符。
同一个节点有绝对路径和相对路径两种写法:
绝对路径必须用 “/” 起首,后面紧跟根节点,比如/step/step/…
相对路径不以“/”起首
"."表示当前节点。
"…"表示当前节点的父节点(两个点)
nodename(节点名称):表示选择该节点的所有子节点
“/”:表示选择根节点
“//”:表示选择任意位置的某个节点
“@”: 表示选择某个属性
常用路径表达式
谓语:就是对路径表达式的附加条件,所有的条件写在方括号“[]”中,表示对节点进行进一步的筛选。常用谓语:
通配符
"*"表示匹配任何元素节点。
"@"表示匹配任何属性值。
node()表示匹配任何类型的节点。
常用通配符用法:
Dome4j对XPth的支持
DOM4J支持使用XPATH来检索xml内容,使用需要引入jaxen-xx-xx.jar的包
Document提供了一个支持对XPATH检索的方法:
List selectNodes(String xpath)