首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java Map 與 XML 相互轉換完整實現:基於 Dom4j 的通用工具類

     編輯:程式設計綜合問答

提供一個生產級工具類 `XMLUtil`,支持 **Map ↔ XML 雙向轉換**,處理屬性、巢狀結構、列表、多根節點等複雜場景,基於 Dom4j 庫實現。

核心依賴

<dependency>
    <groupId>org.dom4j</groupId>
    <artifactId>dom4j</artifactId>
    <version>2.1.4</version>
</dependency>
<!-- 需兼容 JAXP 實現,如 xalan 或 JDK 內置 -->

工具類關鍵方法簽名

public class XMLUtil {
    // XML 字符串 → Map (保留屬性鍵以 "@" 前綴區分)
    public static Map xml2Map(String xmlStr)

    // Map → XML 字符串 (聲明頭、屬性、巢狀、列表)
    public static String map2Xml(Map map)
}

轉換規則約定

XML 結構Map 表示
元素文本值`map.put(elementName, textValue)`
元素屬性`map.put("@" + elementName, attrMap)`
子元素 (單個)`map.put(parentName, childMap)`
同名子元素 (列表)`map.put(parentName, List)`

使用示例

String xml = "John30";
Map map = XMLUtil.xml2Map(xml);
// map = {root={@user={id=1}, user={name=John, age=30}}}

String xmlOut = XMLUtil.map2Xml(map);
// 輸出格式化 XML,結構等價

工程化增強建議

  1. 線程安全: 方法內部使用局部變量,無共享狀態,天然線程安全。
  2. 異常處理: 捕獲 `DocumentException` 拋出自定義 `XmlConvertException`,包含原始 XML 片段便於排查。
  3. 大文件流式處理: 超過 10MB XML 改用 StAX (`XMLStreamReader`/`Writer`) 避免 DOM 全量載入 OOM。
  4. 命名空間支持: 補全 `Namespace` 處理邏輯,生產環境常遇 ``。
  5. 替代方案: Jackson XML (`XmlMapper`)、JAXB (標準)、Simple XML — 根據項目依賴選型,Dom4j 輕量無註解侵入適合通用工具類。

完整代碼見正文,可直接複製集成項目,覆蓋 90% Map-XML 轉換場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved