3

ノート:

一部の値を確認するだけなので、Java オブジェクトを作成する必要はありませんが、それらを汎用オブジェクトやツリーなどとしてアンマーシャリングするものは見つかりませんでした。Jackson の JsonNode のようなもの。これが可能である場合は、私に知らせてください。そうすれば、すべてをマッピングするためにオブジェクトを混乱させないようにすることができます。

今問題:

単純な xml を非整列化する必要がありますが、結果は常に null です。さまざまな注釈を試しましたが、失敗しない場合、結果は null です。

これはこの質問と同じケースのようですが、同じ注釈を使用しても機能しません。

xml は次のようなものです。

<ServiceList>
   <Service Id="1" Code="c" Name="name" ServiceRegistrationStatusID="3" CheckedRegistrationStatusID="2" />
</ServiceList>

そして、私は次のようにアンマーシャリングしています:

ServiceList list = JAXB.unmarshal(new StringReader(xml), ServiceList.class);

したがって、次のような 2 つの内部クラスを作成しました。

@XmlRootElement
public static class ServiceList {
    private List<Service> services;

    public List<Service> getServices() { return services; }
    @XmlElementWrapper(name = "ServiceList")
    @XmlElement(name = "Service")
    public void setServices(List<Service> services) { this.services = services; }

}

@XmlRootElement(name = "Service")
public static class Service {
    private String id;
    private String code;
    private String name;
    private String serviceRegistrationStatusID;
    private String checkedRegistrationStatusID;

    public String getId() {
        return id;
    }
    @XmlAttribute(name = "Id")
    public void setId(String id) {
        this.id = id;
    }
    public String getCode() {
        return code;
    }
    @XmlAttribute(name = "Code")
    public void setCode(String code) {
        this.code = code;
    }
    public String getName() {
        return name;
    }
    @XmlAttribute(name = "Name")
    public void setName(String name) {
        this.name = name;
    }
    public String getServiceRegistrationStatusID() {
        return serviceRegistrationStatusID;
    }
    @XmlAttribute(name = "ServiceRegistrationStatusID")
    public void setServiceRegistrationStatusID(String serviceRegistrationStatusID) {
        this.serviceRegistrationStatusID = serviceRegistrationStatusID;
    }

    public String getCheckedRegistrationStatusID() {
        return checkedRegistrationStatusID;
    }
    @XmlAttribute(name = "CheckedRegistrationStatusID")
    public void setCheckedRegistrationStatusID(String checkedRegistrationStatusID) {
        this.checkedRegistrationStatusID = checkedRegistrationStatusID;
    }

}

静的メソッド内で xml をアンマーシャリングしているので、pojo を静的にする必要がありました。

これについて何か助けはありますか?

前もって感謝します。

4

1 に答える 1

5

削除してみてください @XmlElementWrapper(name = "ServiceList")、それは動作するはずです

于 2013-02-11T10:56:29.833 に答える