1、DOM,Document Object Model,基于DOM的XML分析器将XML文档转换成一个对象模型的集合(DOC树),通过对此模型操作实现对XML文档数据的操作,可以在任何时候对XML文档的任何一部分数据进行访问。
DOC强制使用树模型来访问XML文档中信息
很灵活,当XML文档较大时对内存需求比较高,而且对结构复杂的DOC树的遍历也很耗时,对机器要求比较高。
// step 1: 获得dom解析器工厂(工作的作用是用于创建具体的解析器)
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// System.out.println("class name: " + dbf.getClass().getName());
// step 2:获得具体的dom解析器
DocumentBuilder db = dbf.newDocumentBuilder();
// System.out.println("class name: " + db.getClass().getName());
// step3: 解析一个xml文档,获得Document对象(根结点)
Document document = db.parse(new File("candidate.xml"));
NodeList list = document.getElementsByTagName("PERSON");
2、Sax,Simple APIs for XML,提供的是顺序访问模式,快速读写XML数据的方式。
//step1: 获得SAX解析器工厂实例
SAXParserFactory factory = SAXParserFactory.newInstance();
//step2: 获得SAX解析器实例
SAXParser parser = factory.newSAXParser();
//step3: 开始进行解析
parser.parse(new File("student.xml"), new MyHandler())
3、JDOM,一个开源项目,基于树形结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作
importjava.io.File;importjava.io.FileOutputStream;importjava.util.List;importorg.jdom.Attribute;importorg.jdom.Document;importorg.jdom.Element;importorg.jdom.input.SAXBuilder;importorg.jdom.output.Format;importorg.jdom.output.XMLOutputter;public classJDomTest2
{public static void main(String[] args) throwsException
{
SAXBuilder builder= newSAXBuilder();
Document doc= builder.build(new File("jdom.xml"));
Element element=doc.getRootElement();
System.out.println(element.getName());
Element hello= element.getChild("hello");
System.out.println(hello.getText());
List list=hello.getAttributes();for(int i = 0 ;i < list.size(); i++)
{
Attribute attr=(Attribute)list.get(i);
String attrName=attr.getName();
String attrValue=attr.getValue();
System.out.println(attrName+ "=" +attrValue);
}
hello.removeChild("world");
XMLOutputter out= new XMLOutputter(Format.getPrettyFormat().setIndent(" "));
out.output(doc,new FileOutputStream("jdom2.xml"));
}
}
4、Dom4j