如何使用Java将包含代码和不同命名空间的XML转换为对象?

时间:2015-01-28 18:04:24

标签: java xml jaxb xml-namespaces

<?xml version="1.0" encoding="UTF-8"?>
<Response xmlns="http://www.demo.com/response/ResponseDetails"    
xmlns:ft="http://www.demo.com/response/footer" 
xmlns:hd="http://www.demo.com/response/header"   
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       
xsi:schemaLocation="http://www.demo.com/response/ResponseDetails    
Response.xsd">
<hd:header>
  <hd:STATUS>
    <hd:MESSAGE>
      <hd:MESSAGE_CODE>0000</hd:MESSAGE_CODE>
      <hd:MESSAGE_DESC>SUCCESS</hd:MESSAGE_DESC>
      <hd:MESSAGE_TYPE>SU</hd:MESSAGE_TYPE>
    </hd:MESSAGE>
  </hd:STATUS>
</hd:header>
<ResponseDetails>
  <TAG1>tag 1 value</TAG1>
  <TAG2>tag2 value</TAG2>
  <TAG3>tag3 value</TAG3>
  <TAG4>tag4 value</TAG4>
</ResponseDetails>
<ft:footer>
  <ft:CODEDESCRIPTION />
</ft:footer>
</Response>

这是我从Web服务调用获得的示例响应,我无法将此字符串响应转换为object。上面的XML是我收到的确切内容。 如何使用JAXB或xstream将上述XML转换为对象?

1 个答案:

答案 0 :(得分:1)

JAXB可以将XSD转换为Java类。有许多资源可以帮助您入门,包括Oracle的官方Introduction to JAXB

你的XML包含像Prolog这样的代码不重要。将其视为文本。

还支持不同的命名空间。你可能想在Stack Overflow上阅读一些Blaise Doughan的非常有用的答案,例如one

如果此答案过于宽泛,您可能希望缩小问题的范围。