私はXMLファイルを持ち、xmlスキーマにはカップルcomplexType
が含まれています。ですから、xmlファイルをアンマーシャリングするときに、xmlパーサーに私のxml schema
を与えたいと思います。もしそうなら、それをする方法は可能でしょうか?JAXB:与えられたXMLスキーマを持つXMLファイルを非整列化します。
EDIT:unmarshal
の後、オブジェクトのすべてのフィールドがnullです。どんな考え?
私はXMLファイルを持ち、xmlスキーマにはカップルcomplexType
が含まれています。ですから、xmlファイルをアンマーシャリングするときに、xmlパーサーに私のxml schema
を与えたいと思います。もしそうなら、それをする方法は可能でしょうか?JAXB:与えられたXMLスキーマを持つXMLファイルを非整列化します。
EDIT:unmarshal
の後、オブジェクトのすべてのフィールドがnullです。どんな考え?
UPDATE
あなたが見ている問題は、NameAndAddress
要素内にネストされているコンテンツに起因するものです。あなたはNameAndAddress
クラスを導入して、PackageLabel
のインスタンスを保持することができます。
PackageLabel
import java.io.Serializable;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="PackageLabel")
@XmlAccessorType(XmlAccessType.FIELD)
public class PackageLabel implements Serializable {
@XmlElement(name="NameAndAddress")
private NameAndAddress nameAndAddress;
}
NameAndAddress
import javax.xml.bind.annotation.XmlElement;
public class NameAndAddress {
@XmlElement(name="Name")
private String name;
@XmlElement(name="Address1")
private String address1;
@XmlElement(name="Address2")
private String address2;
@XmlElement(name="City")
private String city;
@XmlElement(name="State")
private String state;
@XmlElement(name="ZipCode")
private String zipCode;
}
のEclipseLink JAXB(MOXY)の@XmlPath拡張
別の方法としては、で@XmlPath
拡張子を使用することができます:
import java.io.Serializable;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import org.eclipse.persistence.oxm.annotations.XmlPath;
@XmlRootElement(name="PackageLabel")
@XmlAccessorType(XmlAccessType.FIELD)
public class PackageLabel implements Serializable {
@XmlPath("NameAndAddress/Name/text()")
private String name;
@XmlPath("NameAndAddress/Address1/text()")
private String address1;
@XmlPath("NameAndAddress/Address2/text()")
private String address2;
@XmlPath("NameAndAddress/City/text()")
private String city;
@XmlPath("NameAndAddress/State/text()")
private String state;
@XmlPath("NameAndAddress/ZipCode/text()")
private String zipCode;
}
詳細情報
あなたはたUnmarshallerのインスタンスにXMLスキーマを設定することができます。これは、オブジェクトにXMLを変換しながら、JAXBは、入力を検証するようになります:
あなたがXMLスキーマからオブジェクト・モデルを生成したい場合は、あなたもそれを行うためにJAXBを使用することができます:
@Harryファム - 以下は役立つかもしれhttp://wiki.eclipse.org/EclipseLink/UserG uide/MOXy/Simple_Values/Enums。先に進まずに新しい質問をすれば、私はそのように手助けすることができます。 –
こんにちは、私は別にその問題を投稿しますが、あなたは私の元の投稿をもう一度見てみることができます。何らかの理由で、 'unmarshal'の後に、私のオブジェクトのすべてのフィールドがすべてnullです。私は元の投稿にいくつかのコードを投稿します。ありがとう、Blaise。 btw、あなたのブログは最高です。 –
@ハリー・パム - あなたの質問に対する私の答えを更新しました。私はあなたがブログを楽しんでいると聞いてうれしいです:)。 –