単一の DOM パーサー インスタンスでこれを行うのは非常に面倒です。そのために、xml ファイルのすべてのデータを含む JavaBean を作成することをお勧めします。そのクラスで呼び出される単純なメソッドはtoCsv
、すべてのアイテムを反復処理し、フォーマットされたコンテンツを返すか、csv ファイルに出力します。このアプローチに従えばJava Architecture for XML Binding (JAXB)
、XML オブジェクトと Java オブジェクト間のマーシャリングとアンマーシャリングを行う を簡単に使用できます。保守が難しいカスタム DOM パーサーの実装はもう必要ありません。JAXB は、パーサー規則を定義するアノテーションを処理します。簡単な例を次に示します。
public interface DataEntity {
/**
* NameSpace of XSD schema files.
*/
public final static String NSP = "https://localhost/project/xsd/";
}
import java.io.Serializable;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import at.fhj.ase.dao.data.validation.ValidationHelper;
/**
* Represents a product category
*
*/
@XmlRootElement(name = "category", namespace = DataEntity.NSP)
public class Category implements Serializable {
/**
*
*/
private static final long serialVersionUID = -487248720383832971L;
private Integer id;
private String name;
private String description;
protected Category() {
}
public Category(final Integer id, final String name,
final String description) {
setId(id);
setName(name);
setDescription(description);
}
@XmlAttribute
public Integer getId() {
return id;
}
private void setId(Integer id) {
ValidationHelper.validateId(id);
this.id = id;
}
@XmlElement(namespace = DataEntity.NSP)
public String getName() {
return name;
}
private void setName(String name) {
ValidationHelper.validateSingleName(name, "name");
this.name = name;
}
@XmlElement(namespace = DataEntity.NSP)
public String getDescription() {
return description;
}
private void setDescription(String description) {
ValidationHelper.validateSingleName(description, "description");
this.description = description;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("Id: ").append(id).append(" Name: ").append(getName())
.append(" Description: ").append(description);
return sb.toString();
}
}
入力としてのxmlファイル:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<category xmlns="https://localhost/project/xsd/" id="1">
<description>des_swdevelopment</description>
<name>swdevelopment</name>
</category>
また、xml から Java にアンマーシャリングする方法:
Interface Unmarshaller
toCsv
メソッドを追加するだけで完了です。このアプローチにより、多くの時間を節約でき、メンテナンスも非常に簡単です。