java DOM4J 读取XML
生活随笔
收集整理的這篇文章主要介紹了
java DOM4J 读取XML
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近學習Java,在處理XML文檔的時候,查閱相關資料,發現了DOM4J這個jre庫,相對C#的XML處理來說,功能還算是跟得上
下面展示一篇我自己寫的一個XML讀取測試
import java.util.Iterator; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import org.dom4j.*; import org.dom4j.io.SAXReader;public class XmlRead {static StringBuilder sBuilder = new StringBuilder();public static void main(String[] args) throws IOException {BufferedReader bReader = new BufferedReader(new InputStreamReader(System.in));String path = null;System.out.println("請輸入XML文件的絕對路徑以及文件名:\n");path = bReader.readLine();sBuilder.append("開始輸出XML文件內容\n");Document document = null;try {document = read(path);sBuilder.append(path + "\n");} catch (MalformedURLException e) {e.printStackTrace();} catch (DocumentException e) {e.printStackTrace();}Element root = getRootElement(document);if (root == null) {System.out.print("沒有獲取到root節點");return;}// 獲取XML文檔的編碼格式String encString = document.getXMLEncoding();sBuilder.append("<?xml version=\"1.0\" encoding=\"" + encString+ "\">\n");sBuilder.append(elementText(root, attText(root), 0));System.out.println(getIterator(root, 0) + "</" + root.getName() + ">");}/*** 遞歸節點* * @description* @param element* @param lvl* 層級* @return*/private static String getIterator(Element element, int lvl) {lvl += 1;for (Iterator i = element.elementIterator(); i.hasNext();) {Element e = (Element) i.next();sBuilder.append(elementText(e, attText(e), lvl));getIterator(e, lvl);int count = e.nodeCount();if (count > 0) {for (int j = 0; j < lvl; j++) {sBuilder.append(" ");}}sBuilder.append("</" + e.getName() + ">\n");}return sBuilder.toString();}/*** 獲取當前節點的屬性的值的字符串* * @description* @param element* 當前節點* @return*/private static String attText(Element element) {String str = " ";for (int i = 0; i < element.attributeCount(); i++) {Attribute attribute = element.attribute(i);str += attribute.getName() + "=\"" + attribute.getValue() + "\" ";}return str;}/*** 獲取當前Element的文本值* * @description* @param element* 當前Element節點* @param text* 屬性值* @param lvl* 層級* @return*/private static String elementText(Element element, String text, int lvl) {String str = "";for (int i = 0; i < lvl; i++) {str += " ";}str += "<" + element.getName();if (text != null && text != "") {str += text;}//由于dom4j里面沒有 hasChild這個屬性或者方法,所以要用nodeCount()這個方法來判斷時候還有子節點int count = element.nodeCount();if (count == 0) {return str += ">";}return str += ">\n";}/*** * @description 讀取XML文件* @param file* XML文件路徑,包含文件名* @return Document 文檔* @throws MalformedURLException* @throws DocumentException*/public static Document read(String file) throws MalformedURLException,DocumentException {SAXReader reader = new SAXReader();Document document = reader.read(new File(file));return document;}/*** 獲取Document文檔的root節點* * @param document* @return*/public static Element getRootElement(Document document) {return document.getRootElement();}}?
?
?
?
轉載于:https://www.cnblogs.com/BBHor/p/3309744.html
總結
以上是生活随笔為你收集整理的java DOM4J 读取XML的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: arm opcode hook
- 下一篇: SX-BOX试用笔记