私は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
を読むことができます私はアンマーシャリングしたいクラスを追加しました。完全にコンパイルする必要のあるコードを提供しました。値は任意のオブジェクトで、@XmlSchemaType(name = "anySimpleType")を使用します。私の状況に合った答えをきれいに更新できますか? – ComputerEngineer88
私はあなたを得ませんでした。あなたは私の答えをあなたの満足度に編集することもできます。私はあなたのクラスのための正確なソリューションを入れたいですか? – Acewin