作者:LUO程嘉嘉_625 | 来源:互联网 | 2023-05-21 10:47
解析XML过程是通过获取Document对象,然后继续获取各个节点以及属性等操作,因此获取Document对象是第一步,使用SAXReader、SAXWriter创建和读取xml
public class Dom4jDemo {public static void main(String[] args) {createXml();readXml();}private static void readXml() {SAXReader reader &#61; new SAXReader();try {Map<String, Object> respMap &#61; new HashMap<String, Object>();Document document &#61; reader.read(new File("students.xml"));Map<String,Object> map &#61; parseElement(document.getRootElement());System.out.println(new Gson().toJson(map));} catch (DocumentException e) {e.printStackTrace();} catch (MalformedURLException e) {e.printStackTrace();}}private static Map<String, Object> parseElement(Element rootElement) {Map<String, Object> map &#61; new HashMap<String, Object>();Iterator<Element> it &#61; rootElement.elementIterator();while (it.hasNext()){Element element &#61; it.next();if (element.elementIterator().hasNext()){map.put(element.getName(),parseElement(element));}else {map.put(element.getName(),element.getTextTrim());}}return map;}private static void createXml() {Document document &#61; DocumentHelper.createDocument();Element root &#61; document.addElement("students");Element oneChildElement &#61; root.addElement("student");oneChildElement.addElement("name").addText("huchx");oneChildElement.addElement("url").addText("www.baidu.com");Element twoChildElement &#61; root.addElement("student1");twoChildElement.addElement("name").addText("王金");twoChildElement.addElement("url").addText("www.google.com");OutputFormat format &#61; new OutputFormat();format.setIndentSize(2);format.setNewlines(true);format.setTrimText(true);format.setPadText(true);try {XMLWriter writer &#61; new XMLWriter(new FileOutputStream(new File("students.xml")), format);writer.write(document);} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
}
读取操作结果显示为&#xff1a;