Dom4j创建和解析XML
jopen
11年前
需要导入Dom4j的一个Jar文件:
Dom4j创建XML
import java.io.FileOutputStream; import java.io.FileWriter; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; public class Test1 { public static void main(String[] args) throws Exception { // 创建文档并设置文档的根元素节点 :第一种方式 // Document document = DocumentHelper.createDocument(); // // Element root = DocumentHelper.createElement("student"); // // document.setRootElement(root); // 创建文档并设置文档的根元素节点 :第二种方式 Element root = DocumentHelper.createElement("student"); Document document = DocumentHelper.createDocument(root); //给根元素添加属性 root.addAttribute("name", "zhangsan"); //给根元素添加子元素 Element helloElement = root.addElement("hello"); Element worldElement = root.addElement("world"); //设置元素的文本内容 helloElement.setText("hello"); worldElement.setText("world"); //给hello元素添加属性 helloElement.addAttribute("age", "20"); //将XML文档输出到命令行 XMLWriter xmlWriter = new XMLWriter(); xmlWriter.write(document); //指定输出格式,第一个参数表示缩进,第二个参数表示是否换行 OutputFormat format = new OutputFormat(" ", true); //以字节流的方式输出到文件 XMLWriter xmlWriter2 = new XMLWriter(new FileOutputStream("student2.xml"), format); xmlWriter2.write(document); //以字符流的方式输出到文件 XMLWriter xmlWriter3 = new XMLWriter(new FileWriter("student3.xml"), format); xmlWriter3.write(document); //xmlWriter3.flush();//当你使用字符流输出的时候,需要有这个刷新的方法,否则没有结果输出 xmlWriter3.close();//close方法中包含xmlWriter3的flush方法,所以这个方法也可以 } }
Dom4j解析XML
import java.io.File; import java.util.Iterator; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.DOMReader; import org.dom4j.io.SAXReader; public class Test2 { public static void main(String[] args) throws Exception { //Dom4j解析XMl方式一:使用SAXReader解析XML SAXReader saxReader = new SAXReader(); //读取文档 Document doc = saxReader.read(new File("student2.xml")); //得到根元素 Element root = doc.getRootElement(); System.out.println("root element: " + root.getName()); //得到根元素下的所有子元素 List childList = root.elements(); System.out.println(childList.size()); //得到根元素下的所有名字为hello子元素 List childList2 = root.elements("hello"); System.out.println(childList2.size()); //得到根元素下的第一个名字为hello的子元素 Element first = root.element("hello"); //得到hello元素下的属性为age的值 System.out.println(first.attributeValue("age")); //遍历根元素下的子元素的第二种方法,第一种是使用List for(Iterator iter = root.elementIterator(); iter.hasNext();) { Element e = (Element)iter.next(); //获得子元素属性为age的值,没有age属性,输出null System.out.println(e.attributeValue("age")); } System.out.println("---------------------------"); //Dom4j解析XMl方式二:使用DOMReader解析XML DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); //在一个项目中使用了名字相同的一个类,使用包名区分 org.w3c.dom.Document document = db.parse(new File("student2.xml")); DOMReader domReader = new DOMReader(); //将JAXP的Document转换为dom4j的Document Document d = domReader.read(document); Element rootElement = d.getRootElement(); System.out.println(rootElement.getName()); } }