首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Jakarta Commons Betwixt 使用指南:JavaBean 與 XML 雙向轉換

     編輯:Java 相關知識

簡介

Betwixt 提供 JavaBean 與 XML 的直觀映射,支援屬性/元素輸出、命名策略自定義、pretty-print 格式化,適合配置文件生成、數據交換場景。

Maven 依賴

<dependency>
  <groupId>commons-betwixt</groupId>
  <artifactId>commons-betwixt</artifactId>
  <version>0.8</version>
</dependency>

基本用法:Bean 轉 XML

1. 定義 Bean

public class Music {
    private String name;
    private String mp3File;
    // Getter/Setter 省略
}

2. 核心代碼

Music music = new Music();
music.setName("music_name");
music.setMp3File("music_mp3file");

Writer writer = new FileWriter("e:/test.xml");
BeanWriter beanWriter = new BeanWriter(writer);

// 配置選項
beanWriter.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false); // 子元素模式
beanWriter.getBindingConfiguration().setMapIDs(false); // 不輸出 id 屬性
beanWriter.enablePrettyPrint(); // 縮進格式化
beanWriter.setEndTagForEmptyElement(true); // 空元素完整閉合
beanWriter.setIndent("  "); // 兩空格縮進

beanWriter.writeXmlDeclaration("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
beanWriter.write("Msg", music); // 根元素名 Msg
writer.close();

3. 輸出結果

<?xml version="1.0" encoding="UTF-8" ?>
<Msg>
  <name>music_name</name>
  <mp3File>music_mp3file</mp3File>
</Msg>

命名策略自定義 (NameMapper)

控制 XML 元素/屬性名稱大小寫與分隔符:

// 小寫開頭 (JavaBean 慣例)
beanWriter.getXMLIntrospector().getConfiguration().setElementNameMapper(new DecapitalizeNameMapper());

// 大寫開頭
beanWriter.getXMLIntrospector().getConfiguration().setElementNameMapper(new CapitalizeNameMapper());

// 連字符分隔: mp3File → mp3-file
HyphenatedNameMapper mapper = new HyphenatedNameMapper();
mapper.setUpperCase(true); // 首字母大寫: Mp3-File
beanWriter.getXMLIntrospector().getConfiguration().setElementNameMapper(mapper);

進階:實現自定義 NameMapper

public class ItsANameMapper implements NameMapper {
    public String mapName(String name) {
        // 自定義邏輯,如加前綴、轉蛇形命名等
        return "custom_" + name.toLowerCase();
    }
}

XML 轉 Bean (解析)

BeanReader beanReader = new BeanReader();
beanReader.registerBeanClass("Music", Music.class);
Music music = (Music) beanReader.parse(new FileInputStream("test.xml"));

總結

  • BeanWriter / BeanReader 核心類
  • 靈活配置:元素/屬性模式、縮進、命名策略
  • 輕量級,無複雜映射文件,適合簡單對象序列化
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved