DOM4J解析XML利用访问者(VisitorSupport)解析XML文件。通过复写各种类型的visit()方法解析各种节点,文本内容。
1、解析:
`
SAXReader saxReader = new SAXReader();
Document doc = saxReader.read(new File("students.xml"));
doc.accept(new MyVisitor());//连接
2、JAVA代码如下:
import java.io.File;
import org.dom4j.*;
import org.dom4j.io.SAXReader;
public class VisitorTest
{
public static void main(String[] args)
{
SAXReader saxReader = new SAXReader();
try
{
Document doc = saxReader.read(new File("students.xml"));
doc.accept(new MyVisitor());
}
catch (DocumentException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//访问者
private static class MyVisitor extends VisitorSupport
{
@Override
public void visit(Attribute node)
{
System.out.println("Attributr : "+node.getName()+"="+node.getValue());
}
@Override
public void visit(Element node)
{
if(node.isTextOnly())
{
System.out.println("Element : "+ node.getName()+" "+node.getText());
}
else
{
System.out.println("-------------"+node.getName()+"-------------");
}
}
@Override
public void visit(ProcessingInstruction node)
{
System.out.println("PI : "+node.getTarget()+" "+node.getText());
}
}
}
3、students.xml如下:
<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/xsl" href = "students.xsl"?>
<students>
<student sn="01">
<name>张三
<like>lili</like>
</name>
<age>18</age>
</student>
<student sn="02">
<name>李四</name>
<age>28</age>
</student>
</students>
`