其他参考XML解析(SAX)
/**
*
* DOM4J基于javase中SAX解析的类库。具有生成xml和解析xml的功能。
*
*
* DOM4J原理:把整个文档全部加载到内存中,组装成倒状树形结构。所在在遍历文档时效率较高。但如果文档的层次结构特别多,遍历速度会大大降低
* SAX解析原理:基于方法,一个标签一个标签进行解析。不会把所有内容都放入到内存中,占用内存比较小。如果层次结构特别多的时候,可以很方便的获取到
* 深层次结构中的文本。(characters)
*
* @author jiamingge
*
*/
public class Test {
public static void main(String[] args) throws IOException, DocumentException {
System.out.println("开始生成");
new Test().readXML();
System.out.println("结束");
}
/**
* 生成xml文件
* @throws IOException
*/
public void writeXML() throws IOException{
//Document文档接口
//Element元素
//Attribute属性
//Text文本
//DocumentHelper工具类
//创建根节点
Element root = DocumentHelper.createElement("teachers");
//把根节点跟文档进行绑定
Document doc = DocumentHelper.createDocument(root);
//添加几个<teacher>下面三行代码写几遍
Element teacher1 = root.addElement("teacher").addAttribute("id", "1");
teacher1.addElement("name").addText("王五");
teacher1.addElement("age").addText("12");
//输出内容格式化,第一个参数:每个元素按照层次关系添加n个指定内容,第二个参数是否换行
OutputFormat farmat = new OutputFormat(" ",true);
XMLWriter writer = new XMLWriter(new FileOutputStream("teacher.xml"),farmat);
//输出文档对象中内容
writer.write(doc);
writer.flush();
writer.close();
}
public void readXML() throws DocumentException{
//文档工厂
DocumentFactory factory = DocumentFactory.getInstance();
//sax读取器
SAXReader reader = new SAXReader(factory);
//获取到xml文件对应的文档对象
Document doc = reader.read(new File("teacher.xml"));
//要一层一层获取,最开始获取到文档的根节点
Element root = doc.getRootElement();
//elementIterator():获取到标签的所有子节点的迭代器
Iterator<Element> rootChildren = root.elementIterator();
while(rootChildren.hasNext()){
Element element = rootChildren.next();
//attributeValue("属性名");获取到标签中指定名称的属性值
System.out.println("id内容为:"+element.attributeValue("id"));
Iterator<Element> teacherChildren = element.elementIterator();
while(teacherChildren.hasNext()){
Element child = teacherChildren.next();
//getName()获取到标签名
//getText()获取到标签中内容
System.out.println("标签:"+child.getName()+",里面的内容是:"+child.getText());
}
}
}
}