0
私はオブジェクトに変換しようとしているXML文書を持っています。これはこのように見えます。SpringMVC JAXBは名前空間を持つXML文書を変換しません
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01">
<Items>
<Request>
<IsValid>false</IsValid>
<ItemSearchRequest>
<Keywords>php</Keywords>
<ResponseGroup>Offers</ResponseGroup>
</ItemSearchRequest>
</Request>
</Items>
<OperationRequest>
<HTTPHeaders>
<Header Name="UserAgent" Value="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36" />
</HTTPHeaders>
<RequestId>1e3171b9-c476-4833-90ff-bc65ebca09e7</RequestId>
</OperationRequest>
</ItemSearchResponse>
しかし、この部分をXMLファイルxmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01"
に含めると、機能しません。 XMLファイルを読み込んでJAXBに送り、再度出力してブラウザで同じ構造を取得しているかどうかを確認します。これは私のコードです。
@RequestMapping("/samplexml")
public SampleXML CreateXMLFile() throws EncoderException {
try {
File file = new File("C:\\Users\\Caciocode\\eclipse-workspace\\earplugs\\src\\main\\resources\\public\\samplexml.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(SampleXML.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
SampleXML sample = (SampleXML) jaxbUnmarshaller.unmarshal(file);
System.out.println(sample);
return sample;
} catch (JAXBException e) {
e.printStackTrace();
return null;
}
}
周り読んだ後、私はNamespacePrefixMapperを作成する必要があると思います。そうなら、私に方法を教えてください。名前空間は常にそこにあります。