由于公司要求掌握dom4j,因此自己趁着闲,去看了看dom4j的部分知识,下面给大家说一下新的
首先,说一下概念,dom4j是用来解析XML的,功能优越,非常优秀
解析XML的过程都是通过获取Document对象来进行操作的,然后通过获取的Document对象来对各个节点以及属性进行相应的操作,获取Document对象有三种方式:
1)自己动手来创建Document对象
Document document = DocumentHelper.createDocument();
Element root = document.addElement("xxxx");//xxxx为根节点
2)读取XML文件来获取对应的Document对象
//创建SAXReader对象
SAXReader reader = new SAXReader();
//读取文件,转换成Document
Document document = reader.read(new File("xxx.xml"));
3)读取XML文本内容获取Document对象
String xmlStr = "<student>...</student>"
Document document = DocumentHelper.parseText(xmlStr);
Element elm = node.addElement("ElementName");
AElement.remove(BElement);
public static void writerDocumentToNewFile(Document document)
throws Exception
{
//输出格式
OutputFormat format = OutputFormat.createPrettyPrint();
//设置编码
format.setEncoding("UTF-8");
//创建输出流,使用Writer
FileOutputStream fos = new FileOutputStream("G:/dom4j/stu01.xml");
//创建xml输出流
XMLWriter writer = new XMLWriter(fos,format);
//生成xml文件
writer.write(document);
writer.flush();
writer.close();
}
一个关于遍历XML文件的函数
public static void listNodes(Element node)
{
System.out.println("当前节点的名称:" + node.getName());
//首先获取当前节点的所有属性节点
List<Attribute> list = node.attributes();
//遍历属性节点
for(Attribute attribute:list)
{
System.out.println("属性:"+attribute.getName()+":"+attribute.getValue());
}
//如果当前节点内容不为空,则输出
if(!(node.getTextTrim().equals("")))
{
System.out.println(node.getName()+":"+node.getText());
}
Iterator<Element> iterator = node.elementIterator();
while(iterator.hasNext())
{
Element e = iterator.next();
listNodes(e);
}
}