我们通过Dom4j实现Dom解析,由于Dom4j不属于sun公司,所以要使用它,就要加载他的jar包。
1.对xml文件进行查询代码实现:
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Dom4jcha {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
SAXReader reader=new SAXReader();
Document document=reader.read("book.xml");
Element element=document.getRootElement();
//获取地一本书名的标签体
//String name=element.element("书").element("书名").getText();
//System.out.println(name);
//获取其它几本书的名字
List<Element> list=element.elements();
for (int i = 0; i <4; i++) {
Element name2=list.get(i);
System.out.println(name2.element("书名").getText());
}
}
}
上面代码中read方法返回的是Document,根节点,而element方法返回的是子节点,这样就有了对这些数据操作的所有对象。
2.对xml文件中进行增加标签的操作:
public static void add() throws Exception{
SAXReader reader=new SAXReader();
Document document=reader.read("book.xml");
Element element=document.getRootElement();
//凭空创建一个标签,并且创建标签体
Element price=DocumentHelper.createElement("特价");
price.setText("400");
//获取父类标签,将此标签,挂在到父类标签上去。
Element book=element.element("书");
book.add(price);
//将加上的标签传到xml文件上去
XMLWriter writer=new XMLWriter(new FileWriter("book.xml"),OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();
}
创建标签的操作是在内存中实现的,要想真正实现在xml文件中添加标签的操作,还要借助流。
3.实现删除标签体操作:
public static void delet() throws Exception{
SAXReader reader=new SAXReader();
Document document=reader.read("book1.xml");
Element element=document.getRootElement();
Element dename=element.element("书").element("书名");
dename.getParent().remove(dename);
XMLWriter writer=new XMLWriter(new FileWriter("book1.xml"),OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();
}