staxon完美实现Xml与Json互转

前端之家收集整理的这篇文章主要介绍了staxon完美实现Xml与Json互转前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Maven包依赖:

  1. <!-- for staxon -->
  2. <dependency>
  3. <groupId>de.odysseus.staxon</groupId>
  4. <artifactId>staxon</artifactId>
  5. <version>1.2</version>
  6. </dependency>
实现代码
  1. package cn.yangyong.fodder.util;
  2.  
  3. import java.io.IOException;
  4. import java.io.StringReader;
  5. import java.io.StringWriter;
  6.  
  7. import javax.xml.stream.XMLEventReader;
  8. import javax.xml.stream.XMLEventWriter;
  9. import javax.xml.stream.XMLInputFactory;
  10. import javax.xml.stream.XMLOutputFactory;
  11.  
  12. import de.odysseus.staxon.json.JsonXMLConfig;
  13. import de.odysseus.staxon.json.JsonXMLConfigBuilder;
  14. import de.odysseus.staxon.json.JsonXMLInputFactory;
  15. import de.odysseus.staxon.json.JsonXMLOutputFactory;
  16. import de.odysseus.staxon.xml.util.PrettyXMLEventWriter;
  17.  
  18. /**
  19. * json and xml converter
  20. * @author magic_yy
  21. * @see https://github.com/beckchr/staxon
  22. * @see https://github.com/beckchr/staxon/wiki
  23. *
  24. */
  25. public class StaxonUtils {
  26. /**
  27. * json string convert to xml string
  28. */
  29. public static String json2xml(String json){
  30. StringReader input = new StringReader(json);
  31. StringWriter output = new StringWriter();
  32. JsonXMLConfig config = new JsonXMLConfigBuilder().multiplePI(false).repairingNamespaces(false).build();
  33. try {
  34. XMLEventReader reader = new JsonXMLInputFactory(config).createXMLEventReader(input);
  35. XMLEventWriter writer = XMLOutputFactory.newInstance().createXMLEventWriter(output);
  36. writer = new PrettyXMLEventWriter(writer);
  37. writer.add(reader);
  38. reader.close();
  39. writer.close();
  40. } catch( Exception e){
  41. e.printStackTrace();
  42. } finally {
  43. try {
  44. output.close();
  45. input.close();
  46. } catch (IOException e) {
  47. e.printStackTrace();
  48. }
  49. }
  50. if(output.toString().length()>=38){//remove <?xml version="1.0" encoding="UTF-8"?>
  51. return output.toString().substring(39);
  52. }
  53. return output.toString();
  54. }
  55. /**
  56. * xml string convert to json string
  57. */
  58. public static String xml2json(String xml){
  59. StringReader input = new StringReader(xml);
  60. StringWriter output = new StringWriter();
  61. JsonXMLConfig config = new JsonXMLConfigBuilder().autoArray(true).autoPrimitive(true).prettyPrint(true).build();
  62. try {
  63. XMLEventReader reader = XMLInputFactory.newInstance().createXMLEventReader(input);
  64. XMLEventWriter writer = new JsonXMLOutputFactory(config).createXMLEventWriter(output);
  65. writer.add(reader);
  66. reader.close();
  67. writer.close();
  68. } catch( Exception e){
  69. e.printStackTrace();
  70. } finally {
  71. try {
  72. output.close();
  73. input.close();
  74. } catch (IOException e) {
  75. e.printStackTrace();
  76. }
  77. }
  78. return output.toString();
  79. }
  80. }


测试代码

  1. package cn.yangyong.fodder.util;
  2.  
  3. import org.junit.Test;
  4.  
  5. public class StaxonUtilsTest {
  6. @Test
  7. public void test_json2xml(){
  8. String json = "{\"Response\" : {\"CustID\" : 1300000428,\"CompID\" : 1100000324,\"Items\" : {\"Item\" : [ {\"Sku_ProductNo\" : \"sku_0004\",\"Wms_Code\" : 1700386977,\"Sku_Response\" : \"T\",\"Sku_Reason\" : null},{\"Sku_ProductNo\" : \"0005\",\"Wms_Code\" : 1700386978,\"Sku_Reason\" : null}]}}}";
  9. String xml = StaxonUtils.json2xml(json);
  10. System.out.println(xml);
  11. }
  12. @Test
  13. public void test_xml2json(){
  14. String xml = "<Response><CustID>1300000428</CustID><CompID>1100000324</CompID><Items><Item><Sku_ProductNo>sku_0004</Sku_ProductNo><Wms_Code>1700386977</Wms_Code><Sku_Response>T</Sku_Response><Sku_Reason></Sku_Reason></Item><Item><Sku_ProductNo>0005</Sku_ProductNo><Wms_Code>1700386978</Wms_Code><Sku_Response>T</Sku_Response><Sku_Reason></Sku_Reason></Item></Items></Response>";
  15. String json = StaxonUtils.xml2json(xml);
  16. System.out.println(json);
  17. }
  18. }

转载地址:

json、javaBean、xml互转的几种工具介绍

http://blog.csdn.net/sdyy321/article/details/7024236/

绝对是一篇好文,笔者不仅给出来解决方案,还比较了几种方法的优劣,此谓授之以渔。

猜你在找的XML相关文章