2017-06-27 17 views
0

私はJAXBの新機能を使用していますが、これを正しい方法で修正する方法がわかりません。JAXBですべての大文字を解析するboolean

私はこのようになりますいくつかのXMLがあります。

<?xml version="1.0"?> 
<ParameterValueStruct xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Name>ROOT.Object.SubObject</Name> 
    <Value xsi:type="xsd:boolean">TRUE</Value> 
</ParameterValueStruct> 

しかし、私のJAXBたUnmarshaller)が(私のgetValueためヌルを返す構造体を提供します。私はこれが真のを返すことを期待しました。

変更TRUEをmy xmlからに変更すると、が有効になります。私のUnmarshallerが "xsd:boolean"を解析する方法はありますかTRUEはJavaブール値に正しく変換されていますか?簡単にするために

は、ここに私のダウン剥奪クラスとアンマーシャリングのためのコードです:

@XmlRootElement (name="ParameterValueStruct") 
public static class ParameterValueStruct 
{ 
    @XmlElement(name = "Name", required = true) 
    protected String name; 
    @XmlElement(name = "Value", required = true) 
    @XmlSchemaType(name = "anySimpleType") 
    protected Object value; 

    public String getName() { return name; } 
    public Object getValue() { return value; } 
} 

public static void main(String[] args) throws Exception 
{ 
    JAXBContext c = JAXBContext.newInstance(ParameterValueStruct.class); 
    Unmarshaller u = c.createUnmarshaller(); 

    byte[] bytes = Files.readAllBytes(Paths.get("test.xml")); 
    ParameterValueStruct struct = (ParameterValueStruct) u.unmarshal(new ByteArrayInputStream(bytes)); 
    System.out.println(struct.getName()+" "+struct.getValue()); // issue here 
} 

はここTRUEあなたは新しいを作成する必要が

ROOT.Object.SubObject null 

答えて

0

としてXMLを残して、出力ですブール値のマーシャリングとアンマーシャリングのためのカスタムアダプタ。これを行うには複数の方法があります。 You can check this thread.

ちょうどあなたがすべてのデータ型のために処理する必要があります一つのことを覚えて、uはマーシャリングと同様に

を非整列化受け入れるしようとしている値も、あなたがこのページから

Java XML and JSON Binding

+0

を読むことができます私はアンマーシャリングしたいクラスを追加しました。完全にコンパイルする必要のあるコードを提供しました。値は任意のオブジェクトで、@XmlSchemaType(name = "anySimpleType")を使用します。私の状況に合った答えをきれいに更新できますか? – ComputerEngineer88

+0

私はあなたを得ませんでした。あなたは私の答えをあなたの満足度に編集することもできます。私はあなたのクラスのための正確なソリューションを入れたいですか? – Acewin

関連する問題