複雑な構造ではありませんが、この設定はシステムのどこかで使用されています。そこで、このXMLをJavaオブジェクトに解析し、シングルトンモードとして設計したいと考えています。
私はGoogleでいくつかの研究をして、JAXBが選択であることを知って、私のアプリケーションは、ルールを読んで、次に何かを行うに従うだけでいくつかの種類のツールプログラムですが、JAXBは、より広くWebサービスに使用することができ、それは私のプロジェクトに合う?
私のアプリケーションは、ルールを読んでそれに従うだけのいくつかの種類のツールプログラムですが、JAXBは広くウェブサービスに使用することができ、それは私のプロジェクトに合いますか?イエスの場合、最も重要な質問は、私はxsdファイルに従ってJavaオブジェクトのソースクラスを生成するためにxjcを使用し、アンマーシャルの後、私は直接これらのConfigurationTypeオブジェクトを取得します。
JAXBは理想的なソリューションです。しかし、そのために必ずしもxsdやxjcが必要なわけではない。多くの場合、xsdは持っていないが、xmlが何であるかは知っている。単にあなたのxmlを分析するだけで、例えば
<customer id="100">
<age>29</age>
<name>mkyong</name>
</customer>
必要なモデルクラスを作成します。
@XmlRootElement
public class Customer {
String name;
int age;
int id;
public String getName() {
return name;
}
@XmlElement
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
@XmlElement
public void setAge(int age) {
this.age = age;
}
public int getId() {
return id;
}
@XmlAttribute
public void setId(int id) {
this.id = id;
}
}
アンマーシャルを試みます。
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Customer customer = (Customer) jaxbUnmarshaller.unmarshal(new File("C:\\file.xml"));
結果を確認し、バグを修正します
JAXBを使ってアンマーシャルを行うためには
与えられたXMLをXSDに変換する(自分で、またはオンラインの変換ツールで)。
eclipseでJAXBプロジェクトを作成する。
XSDファイルを作成し、変換したXSDの内容を貼り付ける。
**XSDファイル--> Generate--> JAXBクラス-->の上で右クリックし、指示に従います(これにより、srcに必要な.javaファイル(package-info、object factory、pojoクラスなど)がすべて作成されます)。
アンマーシャル操作を行うための別の.javaファイルをsrcに作成し、それを実行する。
Happy Coding !
JAXBは、xmlとJavaクラスのマッピングをスムーズに行うことができるので、信頼できる選択です。しかし、他にも利用可能なフレームワークがあり、ここではその一つを紹介します。