javaで、XMLメッセージを生成する方法

XMLのメッセージを生成するには、JavaのDOM(ドキュメント・オブジェクト・モデル)またはJAXB(Java Architecture for XML Binding)を使用して処理します。

DOMを用いてXMLメッセージを作成する手順は次のとおりです。

  1. DocumentBuilderオブジェクトを作成して、ドキュメントオブジェクトを構築します。
  2. DocumentBuilder オブジェクトの newDocument メソッドを使用して、Document オブジェクトを作成する。
  3. ドキュメントオブジェクトのcreateElementメソッドとcreateAttributeメソッドで、XML要素と属性を作成できます。
  4. DocumentオブジェクトのappendChildメソッドとsetAttributeNodeメソッドを使って、ドキュメントに要素と属性を追加できます。
  5. Transformerクラスを使用すると、DocumentオブジェクトをXML形式に変換し、XMLファイルとして保存できます。

DOMを使用するXMLメッセージ生成サンプルコードは次のとおりです。

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class GenerateXML {
    public static void main(String[] args) {
        try {
            // 创建DocumentBuilder对象
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();

            // 创建Document对象
            Document document = builder.newDocument();

            // 创建根元素
            Element rootElement = document.createElement("root");
            document.appendChild(rootElement);

            // 创建子元素
            Element childElement = document.createElement("child");
            childElement.setTextContent("Hello, World!");
            rootElement.appendChild(childElement);

            // 将文档保存为XML文件
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            DOMSource source = new DOMSource(document);
            StreamResult result = new StreamResult("output.xml");
            transformer.transform(source, result);

            System.out.println("XML文件生成成功!");
        } catch (ParserConfigurationException | TransformerException e) {
            e.printStackTrace();
        }
    }
}

JAXBという技術を利用する方法があります。JAXBは、JavaオブジェクトをXML要素に直接マッピングします。そのためには、まずXMLメッセージの構造を表すJavaクラスを定義し、そのクラスをJAXB APIを使用してXMLに変換します。

以下に、JAXBを利用したXMLドキュメント生成のコード例を記載します。

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import java.io.FileOutputStream;

public class GenerateXML {
    public static void main(String[] args) {
        try {
            // 创建JAXBContext对象
            JAXBContext context = JAXBContext.newInstance(Root.class);

            // 创建Marshaller对象
            Marshaller marshaller = context.createMarshaller();
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

            // 创建Root对象
            Root root = new Root();
            root.setChild("Hello, World!");

            // 将Root对象转换为XML
            marshaller.marshal(root, new FileOutputStream("output.xml"));

            System.out.println("XML文件生成成功!");
        } catch (JAXBException e) {
            e.printStackTrace();
        }
    }
}

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
class Root {
    private String child;

    @XmlElement
    public String getChild() {
        return child;
    }

    public void setChild(String child) {
        this.child = child;
    }
}

これらのサンプルコード内の”output.xml”は生成されるXMLファイルのパスと名前で、必要に応じて変更できます。

bannerAds