jaxb解析xml

前端之家收集整理的这篇文章主要介绍了jaxb解析xml前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <MESSAGE>
  3. <DATASET name="SBR_PORT_0001">
  4. <DATA>
  5. <ITEM key="U000001" val="ddd7ff6a-fbdc-449c-beb4-cc1bb9ad894c"/>
  6. <ITEM key="U000002" val="XXX备案单位名称"/>
  7. <ITEM key="U000003" val="XXX备案单位地址"/>
  8. <ITEM key="U000004" val="010010"/>
  9. <ITEM key="U000005" val="110000"/>
  10. <ITEM key="U000006" val="01001413002"/>
  11. <ITEM key="U000007" val="20141030"/>
  12. <ITEM key="U000008" val="网络安全保卫局"/>
  13. <ITEM key="U000009" val="20141030"/>
  14. <ITEM key="U000010" val="张三"/>
  15. <ITEM key="U000011" val="职务"/>
  16. <ITEM key="U000012" val="0102356133"/>
  17. <ITEM key="U000013" val="xxxxmail@qq.com"/>
  18. <ITEM key="U000014" val="XXX责任部门"/>
  19. <ITEM key="U000015" val="李四"/>
  20. <ITEM key="U000016" val="职务"/>
  21. <ITEM key="U000017" val="010355446645"/>
  22. <ITEM key="U000018" val="testEmail@qq.com"/>
  23. <ITEM key="U000019" val="13586456456"/>
  24. <ITEM key="U000020" val="2"/>
  25. <ITEM key="U000021" val=""/>
  26. <ITEM key="U000022" val="3"/>
  27. <ITEM key="U000023" val=""/>
  28. <ITEM key="U000024" val="13"/>
  29. <ITEM key="U000025" val=""/>
  30. </DATA>
  31. </DATASET>
  32. <DATASET name="SBR_PORT_0002">
  33. <DATA>
  34. <ITEM key="S000001" val="249cb0b3-1f32-446a-ae59-2de14587865f"/>
  35. <ITEM key="U000001" val="ddd7ff6a-fbdc-449c-beb4-cc1bb9ad894c"/>
  36. <ITEM key="S000004" val="01001413002-00002"/>
  37. <ITEM key="S000002" val="信息系统一"/>
  38. <ITEM key="S000003" val="00002"/>
  39. <ITEM key="S000005" val="2,4"/>
  40. <ITEM key="S000006" val=""/>
  41. <ITEM key="S000007" val="业务描述"/>
  42. <ITEM key="S000008" val="10"/>
  43. <ITEM key="S000009" val=""/>
  44. <ITEM key="S000010" val=""/>
  45. <ITEM key="S000011" val=""/>
  46. <ITEM key="S000012" val="1"/>
  47. <ITEM key="S000013" val=""/>
  48. <ITEM key="S000014" val="1"/>
  49. <ITEM key="S000015" val=""/>
  50. <ITEM key="S000016" val="2"/>
  51. <ITEM key="S000017" val=""/>
  52. <ITEM key="S000018" val="1,2"/>
  53. <ITEM key="S000019" val=""/>
  54. <ITEM key="S000020" val=""/>
  55. <ITEM key="S000021" val="2"/>
  56. <ITEM key="S000022" val="2"/>
  57. <ITEM key="S000023" val="2"/>
  58. <ITEM key="S000024" val="2"/>
  59. <ITEM key="S000025" val="2"/>
  60. <ITEM key="S000026" val=""/>
  61. <ITEM key="S000027" val="100"/>
  62. <ITEM key="S000028" val="100"/>
  63. <ITEM key="S000029" val="100"/>
  64. <ITEM key="S000030" val="0"/>
  65. <ITEM key="S000031" val="-1"/>
  66. <ITEM key="S000032" val=""/>
  67. <ITEM key="S000033" val=""/>
  68. <ITEM key="S000034" val=""/>
  69. <ITEM key="S000035" val=""/>
  70. <ITEM key="S000036" val=""/>
  71. <ITEM key="S000037" val="22.0"/>
  72. <ITEM key="S000038" val=""/>
  73. <ITEM key="S000039" val="1"/>
  74. <ITEM key="S000040" val="1"/>
  75. <ITEM key="S000041" val="1"/>
  76. <ITEM key="S000042" val="1"/>
  77. <ITEM key="S000043" val="1"/>
  78. <ITEM key="S000044" val="1"/>
  79. <ITEM key="S000045" val="1"/>
  80. <ITEM key="S000046" val="0"/>
  81. <ITEM key="S000047" val=""/>
  82. <ITEM key="S000048" val="XXX其他服务"/>
  83. <ITEM key="S000049" val="1"/>
  84. <ITEM key="S000050" val="1"/>
  85. <ITEM key="S000051" val="2"/>
  86. <ITEM key="S000052" val="2"/>
  87. <ITEM key="S000053" val="3"/>
  88. <ITEM key="S000054" val="3"/>
  89. <ITEM key="S000055" val=""/>
  90. <ITEM key="S000056" val="XXX等级测评单位名称"/>
  91. <ITEM key="S000057" val="20141009"/>
  92. <ITEM key="S000058" val="1"/>
  93. <ITEM key="S000059" val="XXX上级系统名称"/>
  94. <ITEM key="S000060" val="XXX上级系统所属单位名称"/>
  95. <ITEM key="S000061" val="43"/>
  96. <ITEM key="S000062" val="3"/>
  97. <ITEM key="S000063" val="43"/>
  98. <ITEM key="S000064" val="3"/>
  99. <ITEM key="S000065" val="3"/>
  100. <ITEM key="S000066" val="20141016"/>
  101. <ITEM key="S000067" val="1"/>
  102. <ITEM key="S000068" val="1"/>
  103. <ITEM key="S000069" val="XXX主管部门名称"/>
  104. <ITEM key="S000070" val="0"/>
  105. <ITEM key="S000071" val="XXX填表人"/>
  106. <ITEM key="S000072" val="20141016"/>
  107. </DATA>
  108. </DATASET>
  109. <DATASET name="SBR_PORT_0003">
  110. <DATA>
  111. <ITEM key="A000001" val="891326ed-9b9a-4cf1-ba08-bd5d2ff45e64"/>
  112. <ITEM key="A000002" val="10"/>
  113. <ITEM key="A000003" val="附件1.xlsx"/>
  114. <ITEM key="A000004" val="REC_INFO_SYS_ACTH\50cd1dd4-6520-4ece-afe7-d1470acfc632.xlsx"/>
  115. <ITEM key="S000001" val="249cb0b3-1f32-446a-ae59-2de14587865f"/>
  116. </DATA>
  117. <DATA>
  118. <ITEM key="A000001" val="a0f3ea92-3c8e-46c2-8e04-e5a43f09ac74"/>
  119. <ITEM key="A000002" val="11"/>
  120. <ITEM key="A000003" val="附件2.xlsx"/>
  121. <ITEM key="A000004" val="REC_INFO_SYS_ACTH\9b77287d-fe25-46aa-9fe3-6672b1f96b9a.xlsx"/>
  122. <ITEM key="S000001" val="249cb0b3-1f32-446a-ae59-2de14587865f"/>
  123. </DATA>
  124. <DATA>
  125. <ITEM key="A000001" val="c1cb1be3-909c-4b14-afd7-f2cbfaa9e392"/>
  126. <ITEM key="A000002" val="12"/>
  127. <ITEM key="A000003" val="附件3.docx"/>
  128. <ITEM key="A000004" val="REC_INFO_SYS_ACTH\99dec929-a677-4b95-810b-db79cea3467a.docx"/>
  129. <ITEM key="S000001" val="249cb0b3-1f32-446a-ae59-2de14587865f"/>
  130. </DATA>
  131. <DATA>
  132. <ITEM key="A000001" val="ff22d75a-ba68-42a2-9a46-c0bd3506dc5b"/>
  133. <ITEM key="A000002" val="15"/>
  134. <ITEM key="A000003" val="附件4.xlsx"/>
  135. <ITEM key="A000004" val="REC_INFO_SYS_ACTH\e0d76c40-249b-462d-8891-258a13d2f744.xlsx"/>
  136. <ITEM key="S000001" val="249cb0b3-1f32-446a-ae59-2de14587865f"/>
  137. </DATA>
  138. </DATASET>
  139. </MESSAGE>
  1. import javax.xml.bind.JAXBContext;
  2. import javax.xml.bind.JAXBException;
  3. import javax.xml.bind.Unmarshaller;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. import java.text.MessageFormat;
  9. import java.util.List;
  10.  
  11. public class JaxbReadXml {
  12.  
  13. @SuppressWarnings("unchecked")
  14. public static <T> T readString(Class<T> clazz,String context) throws JAXBException {
  15. try {
  16. JAXBContext jc = JAXBContext.newInstance(clazz);
  17. Unmarshaller u = jc.createUnmarshaller();
  18. return (T) u.unmarshal(new File(context));
  19. } catch (JAXBException e) {
  20. // logger.trace(e);
  21. throw e;
  22. }
  23. }
  24.  
  25. @SuppressWarnings("unchecked")
  26. public static <T> T readConfig(Class<T> clazz,String config,Object... arguments) throws IOException,JAXBException {
  27. InputStream is = null;
  28. try {
  29. if (arguments.length > 0) {
  30. config = MessageFormat.format(config,arguments);
  31. }
  32. // logger.trace("read configFileName=" + config);
  33. JAXBContext jc = JAXBContext.newInstance(clazz);
  34. Unmarshaller u = jc.createUnmarshaller();
  35. is = new FileInputStream(config);
  36. return (T) u.unmarshal(is);
  37. } catch (IOException e) {
  38. // logger.trace(config,e);
  39. throw e;
  40. } catch (JAXBException e) {
  41. // logger.trace(config,e);
  42. throw e;
  43. } finally {
  44. if (is != null) {
  45. is.close();
  46. }
  47. }
  48. }
  49.  
  50. @SuppressWarnings("unchecked")
  51. public static <T> T readConfigFromStream(Class<T> clazz,InputStream dataStream) throws JAXBException {
  52. try {
  53. JAXBContext jc = JAXBContext.newInstance(clazz);
  54. Unmarshaller u = jc.createUnmarshaller();
  55. return (T) u.unmarshal(dataStream);
  56. } catch (JAXBException e) {
  57. // logger.trace(e);
  58. throw e;
  59. }
  60. }
  61.  
  62. public static void main(String[] args) throws JAXBException {
  63. JaxDto jaxDto = JaxbReadXml.readString(JaxDto.class,"src/main/resources/message.xml");
  64. List<DataSet> dataSetList = jaxDto.getDatasetsList();
  65. DataSet dataSet1 =dataSetList.get(1);
  66. DataSet dataSet2 = dataSetList.get(2);
  67.  
  68.  
  69.  
  70.  
  71. }
  1. import javax.xml.bind.annotation.XmlAccessType;
  2. import javax.xml.bind.annotation.XmlAccessorType;
  3. import javax.xml.bind.annotation.XmlElement;
  4. import javax.xml.bind.annotation.XmlRootElement;
  5. import java.util.List;
  6.  
  7. /** * Created by lcc on 2017/9/7. */
  8. @XmlRootElement(name = "MESSAGE")
  9. @XmlAccessorType(XmlAccessType.FIELD)
  10. public class JaxDto {
  11. @XmlElement(name = "DATASET")
  12. private List<DataSet> datasetsList;
  13.  
  14. public List<DataSet> getDatasetsList() {
  15. return datasetsList;
  16. }
  17.  
  18. public void setDatasetsList(List<DataSet> datasetsList) {
  19. this.datasetsList = datasetsList;
  20. }
  21. }
  1. import javax.xml.bind.annotation.XmlAccessType;
  2. import javax.xml.bind.annotation.XmlAccessorType;
  3. import javax.xml.bind.annotation.XmlAttribute;
  4. import javax.xml.bind.annotation.XmlElement;
  5. import java.util.List;
  6.  
  7.  
  8. @XmlAccessorType(XmlAccessType.FIELD)
  9. public class DataSet {
  10.  
  11. @XmlAttribute(name = "name")
  12. private String name;
  13.  
  14. @XmlElement(name = "DATA")
  15. private List<DATA> list;
  16.  
  17. public List<DATA> getList() {
  18. return list;
  19. }
  20.  
  21. public void setList(List<DATA> list) {
  22. this.list = list;
  23. }
  24.  
  25. public String getName() {
  26. return name;
  27. }
  28.  
  29. public void setName(String name) {
  30. this.name = name;
  31. }
  32. }
  1. import javax.xml.bind.annotation.XmlAccessType;
  2. import javax.xml.bind.annotation.XmlAccessorType;
  3. import javax.xml.bind.annotation.XmlElement;
  4. import java.util.List;
  5.  
  6. /** * Created by lcc on 2017/9/7. */
  7.  
  8. @XmlAccessorType(XmlAccessType.FIELD)
  9. public class DATA {
  10. @XmlElement(name = "ITEM")
  11. private List<ITEM> itemList;
  12.  
  13. public List<ITEM> getItemList() {
  14. return itemList;
  15. }
  16.  
  17. public void setItemList(List<ITEM> itemList) {
  18. this.itemList = itemList;
  19. }
  20. }
  1. /** * Created by lcc * on 2017/9/7. */
  2. @XmlAccessorType(XmlAccessType.FIELD)
  3. public class ITEM {
  4.  
  5. @XmlAttribute(name = "key")
  6. private String key;
  7.  
  8. @XmlAttribute(name = "val")
  9. private String val;
  10.  
  11. public String getVal() {
  12. return val;
  13. }
  14.  
  15. public void setVal(String val) {
  16. this.val = val;
  17. }
  18.  
  19. public String getKey() {
  20.  
  21. return key;
  22. }
  23.  
  24. public void setKey(String key) {
  25. this.key = key;
  26. }
  27. }
  1. import org.w3c.dom.Element;
  2. import org.w3c.dom.Node;
  3. import org.w3c.dom.NodeList;
  4.  
  5. import javax.xml.bind.annotation.adapters.XmlAdapter;
  6. import java.util.HashMap;
  7. import java.util.Map;
  8.  
  9. public class MapAdapter extends XmlAdapter<Object,Map<String,String>> {
  10.  
  11. @Override
  12. public Map<String,String> unmarshal(Object datas) throws Exception {
  13. NodeList rowlist = ((Element) datas).getChildNodes();
  14. int rowCount = rowlist.getLength();;
  15. Map<String,String> itemMap = new HashMap<>();
  16. for (int i = 0; i < rowCount; i++) {
  17. Node detailNode = rowlist.item(i);
  18. String key = detailNode.getAttributes().item(0).getNodeValue();
  19. String value = detailNode.getAttributes().item(1).getNodeValue();
  20. if (key == null || "".equals(key)) {
  21. continue;
  22. }
  23. itemMap.put(key,value);
  24.  
  25. }
  26. return itemMap;
  27.  
  28.  
  29. // Map<String,String> map = new HashMap<String,String>();
  30. // NodeList childNodes = ((Element) datas).getChildNodes();
  31. // for(int x=0,size=childNodes.getLength(); x<size; x++) {
  32. // Node childNode = childNodes.item(x);
  33. // if(childNode.getNodeType() == Node.ELEMENT_NODE) {
  34. // map.put(childNode.getLocalName(),childNode.getTextContent());
  35. // }
  36. // }
  37. // return map;
  38. }
  39.  
  40. @Override
  41. public Object marshal(Map<String,String> v) throws Exception {
  42. return null;
  43. }
  44. }
  45. /** * MapEntity[] list = new MapEntity[map.size()]; * Set keyset = map.keySet(); * int index =0; * for(Iterator itor = keyset.iterator(); itor.hasNext();){ * MapEntity item = new MapEntity(); * item.key = itor.next(); * item.value = map.get(item.key); * list[index++] = item; * } * return list; * } * * @Override public Map unmarshal(MapEntity[] list) throws Exception { * <p> * Map map = new HashMap(); * for(int i=0;i<list.length;i++){ * MapEntity item = list[i]; * map.put(item.key,item.value); * } * <p> * return map; * <p> * } **/

这里遇到个问题 是想把一个data 下的所以的item 变成map但是自己实现的MapAdapter不行。个人感觉jaxb还是适合解析javabean。最后还是选择dom4j解析。

猜你在找的XML相关文章