xml
- <?xml version="1.0" encoding="UTF-8"?>
- <MESSAGE>
- <DATASET name="SBR_PORT_0001">
- <DATA>
- <ITEM key="U000001" val="ddd7ff6a-fbdc-449c-beb4-cc1bb9ad894c"/>
- <ITEM key="U000002" val="XXX备案单位名称"/>
- <ITEM key="U000003" val="XXX备案单位地址"/>
- <ITEM key="U000004" val="010010"/>
- <ITEM key="U000005" val="110000"/>
- <ITEM key="U000006" val="01001413002"/>
- <ITEM key="U000007" val="20141030"/>
- <ITEM key="U000008" val="网络安全保卫局"/>
- <ITEM key="U000009" val="20141030"/>
- <ITEM key="U000010" val="张三"/>
- <ITEM key="U000011" val="职务"/>
- <ITEM key="U000012" val="0102356133"/>
- <ITEM key="U000013" val="xxxxmail@qq.com"/>
- <ITEM key="U000014" val="XXX责任部门"/>
- <ITEM key="U000015" val="李四"/>
- <ITEM key="U000016" val="职务"/>
- <ITEM key="U000017" val="010355446645"/>
- <ITEM key="U000018" val="testEmail@qq.com"/>
- <ITEM key="U000019" val="13586456456"/>
- <ITEM key="U000020" val="2"/>
- <ITEM key="U000021" val=""/>
- <ITEM key="U000022" val="3"/>
- <ITEM key="U000023" val=""/>
- <ITEM key="U000024" val="13"/>
- <ITEM key="U000025" val=""/>
- </DATA>
- </DATASET>
- <DATASET name="SBR_PORT_0002">
- <DATA>
- <ITEM key="S000001" val="249cb0b3-1f32-446a-ae59-2de14587865f"/>
- <ITEM key="U000001" val="ddd7ff6a-fbdc-449c-beb4-cc1bb9ad894c"/>
- <ITEM key="S000004" val="01001413002-00002"/>
- <ITEM key="S000002" val="信息系统一"/>
- <ITEM key="S000003" val="00002"/>
- <ITEM key="S000005" val="2,4"/>
- <ITEM key="S000006" val=""/>
- <ITEM key="S000007" val="业务描述"/>
- <ITEM key="S000008" val="10"/>
- <ITEM key="S000009" val=""/>
- <ITEM key="S000010" val=""/>
- <ITEM key="S000011" val=""/>
- <ITEM key="S000012" val="1"/>
- <ITEM key="S000013" val=""/>
- <ITEM key="S000014" val="1"/>
- <ITEM key="S000015" val=""/>
- <ITEM key="S000016" val="2"/>
- <ITEM key="S000017" val=""/>
- <ITEM key="S000018" val="1,2"/>
- <ITEM key="S000019" val=""/>
- <ITEM key="S000020" val=""/>
- <ITEM key="S000021" val="2"/>
- <ITEM key="S000022" val="2"/>
- <ITEM key="S000023" val="2"/>
- <ITEM key="S000024" val="2"/>
- <ITEM key="S000025" val="2"/>
- <ITEM key="S000026" val=""/>
- <ITEM key="S000027" val="100"/>
- <ITEM key="S000028" val="100"/>
- <ITEM key="S000029" val="100"/>
- <ITEM key="S000030" val="0"/>
- <ITEM key="S000031" val="-1"/>
- <ITEM key="S000032" val=""/>
- <ITEM key="S000033" val=""/>
- <ITEM key="S000034" val=""/>
- <ITEM key="S000035" val=""/>
- <ITEM key="S000036" val=""/>
- <ITEM key="S000037" val="22.0"/>
- <ITEM key="S000038" val=""/>
- <ITEM key="S000039" val="1"/>
- <ITEM key="S000040" val="1"/>
- <ITEM key="S000041" val="1"/>
- <ITEM key="S000042" val="1"/>
- <ITEM key="S000043" val="1"/>
- <ITEM key="S000044" val="1"/>
- <ITEM key="S000045" val="1"/>
- <ITEM key="S000046" val="0"/>
- <ITEM key="S000047" val=""/>
- <ITEM key="S000048" val="XXX其他服务"/>
- <ITEM key="S000049" val="1"/>
- <ITEM key="S000050" val="1"/>
- <ITEM key="S000051" val="2"/>
- <ITEM key="S000052" val="2"/>
- <ITEM key="S000053" val="3"/>
- <ITEM key="S000054" val="3"/>
- <ITEM key="S000055" val=""/>
- <ITEM key="S000056" val="XXX等级测评单位名称"/>
- <ITEM key="S000057" val="20141009"/>
- <ITEM key="S000058" val="1"/>
- <ITEM key="S000059" val="XXX上级系统名称"/>
- <ITEM key="S000060" val="XXX上级系统所属单位名称"/>
- <ITEM key="S000061" val="43"/>
- <ITEM key="S000062" val="3"/>
- <ITEM key="S000063" val="43"/>
- <ITEM key="S000064" val="3"/>
- <ITEM key="S000065" val="3"/>
- <ITEM key="S000066" val="20141016"/>
- <ITEM key="S000067" val="1"/>
- <ITEM key="S000068" val="1"/>
- <ITEM key="S000069" val="XXX主管部门名称"/>
- <ITEM key="S000070" val="0"/>
- <ITEM key="S000071" val="XXX填表人"/>
- <ITEM key="S000072" val="20141016"/>
- </DATA>
- </DATASET>
- <DATASET name="SBR_PORT_0003">
- <DATA>
- <ITEM key="A000001" val="891326ed-9b9a-4cf1-ba08-bd5d2ff45e64"/>
- <ITEM key="A000002" val="10"/>
- <ITEM key="A000003" val="附件1.xlsx"/>
- <ITEM key="A000004" val="REC_INFO_SYS_ACTH\50cd1dd4-6520-4ece-afe7-d1470acfc632.xlsx"/>
- <ITEM key="S000001" val="249cb0b3-1f32-446a-ae59-2de14587865f"/>
- </DATA>
- <DATA>
- <ITEM key="A000001" val="a0f3ea92-3c8e-46c2-8e04-e5a43f09ac74"/>
- <ITEM key="A000002" val="11"/>
- <ITEM key="A000003" val="附件2.xlsx"/>
- <ITEM key="A000004" val="REC_INFO_SYS_ACTH\9b77287d-fe25-46aa-9fe3-6672b1f96b9a.xlsx"/>
- <ITEM key="S000001" val="249cb0b3-1f32-446a-ae59-2de14587865f"/>
- </DATA>
- <DATA>
- <ITEM key="A000001" val="c1cb1be3-909c-4b14-afd7-f2cbfaa9e392"/>
- <ITEM key="A000002" val="12"/>
- <ITEM key="A000003" val="附件3.docx"/>
- <ITEM key="A000004" val="REC_INFO_SYS_ACTH\99dec929-a677-4b95-810b-db79cea3467a.docx"/>
- <ITEM key="S000001" val="249cb0b3-1f32-446a-ae59-2de14587865f"/>
- </DATA>
- <DATA>
- <ITEM key="A000001" val="ff22d75a-ba68-42a2-9a46-c0bd3506dc5b"/>
- <ITEM key="A000002" val="15"/>
- <ITEM key="A000003" val="附件4.xlsx"/>
- <ITEM key="A000004" val="REC_INFO_SYS_ACTH\e0d76c40-249b-462d-8891-258a13d2f744.xlsx"/>
- <ITEM key="S000001" val="249cb0b3-1f32-446a-ae59-2de14587865f"/>
- </DATA>
- </DATASET>
- </MESSAGE>
- import javax.xml.bind.JAXBContext;
- import javax.xml.bind.JAXBException;
- import javax.xml.bind.Unmarshaller;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.text.MessageFormat;
- import java.util.List;
-
- public class JaxbReadXml {
-
- @SuppressWarnings("unchecked")
- public static <T> T readString(Class<T> clazz,String context) throws JAXBException {
- try {
- JAXBContext jc = JAXBContext.newInstance(clazz);
- Unmarshaller u = jc.createUnmarshaller();
- return (T) u.unmarshal(new File(context));
- } catch (JAXBException e) {
- // logger.trace(e);
- throw e;
- }
- }
-
- @SuppressWarnings("unchecked")
- public static <T> T readConfig(Class<T> clazz,String config,Object... arguments) throws IOException,JAXBException {
- InputStream is = null;
- try {
- if (arguments.length > 0) {
- config = MessageFormat.format(config,arguments);
- }
- // logger.trace("read configFileName=" + config);
- JAXBContext jc = JAXBContext.newInstance(clazz);
- Unmarshaller u = jc.createUnmarshaller();
- is = new FileInputStream(config);
- return (T) u.unmarshal(is);
- } catch (IOException e) {
- // logger.trace(config,e);
- throw e;
- } catch (JAXBException e) {
- // logger.trace(config,e);
- throw e;
- } finally {
- if (is != null) {
- is.close();
- }
- }
- }
-
- @SuppressWarnings("unchecked")
- public static <T> T readConfigFromStream(Class<T> clazz,InputStream dataStream) throws JAXBException {
- try {
- JAXBContext jc = JAXBContext.newInstance(clazz);
- Unmarshaller u = jc.createUnmarshaller();
- return (T) u.unmarshal(dataStream);
- } catch (JAXBException e) {
- // logger.trace(e);
- throw e;
- }
- }
-
- public static void main(String[] args) throws JAXBException {
- JaxDto jaxDto = JaxbReadXml.readString(JaxDto.class,"src/main/resources/message.xml");
- List<DataSet> dataSetList = jaxDto.getDatasetsList();
- DataSet dataSet1 =dataSetList.get(1);
- DataSet dataSet2 = dataSetList.get(2);
-
-
-
-
- }
- import javax.xml.bind.annotation.XmlAccessType;
- import javax.xml.bind.annotation.XmlAccessorType;
- import javax.xml.bind.annotation.XmlElement;
- import javax.xml.bind.annotation.XmlRootElement;
- import java.util.List;
-
- /** * Created by lcc on 2017/9/7. */
- @XmlRootElement(name = "MESSAGE")
- @XmlAccessorType(XmlAccessType.FIELD)
- public class JaxDto {
- @XmlElement(name = "DATASET")
- private List<DataSet> datasetsList;
-
- public List<DataSet> getDatasetsList() {
- return datasetsList;
- }
-
- public void setDatasetsList(List<DataSet> datasetsList) {
- this.datasetsList = datasetsList;
- }
- }
- import javax.xml.bind.annotation.XmlAccessType;
- import javax.xml.bind.annotation.XmlAccessorType;
- import javax.xml.bind.annotation.XmlAttribute;
- import javax.xml.bind.annotation.XmlElement;
- import java.util.List;
-
-
- @XmlAccessorType(XmlAccessType.FIELD)
- public class DataSet {
-
- @XmlAttribute(name = "name")
- private String name;
-
- @XmlElement(name = "DATA")
- private List<DATA> list;
-
- public List<DATA> getList() {
- return list;
- }
-
- public void setList(List<DATA> list) {
- this.list = list;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
- }
- import javax.xml.bind.annotation.XmlAccessType;
- import javax.xml.bind.annotation.XmlAccessorType;
- import javax.xml.bind.annotation.XmlElement;
- import java.util.List;
-
- /** * Created by lcc on 2017/9/7. */
-
- @XmlAccessorType(XmlAccessType.FIELD)
- public class DATA {
- @XmlElement(name = "ITEM")
- private List<ITEM> itemList;
-
- public List<ITEM> getItemList() {
- return itemList;
- }
-
- public void setItemList(List<ITEM> itemList) {
- this.itemList = itemList;
- }
- }
- /** * Created by lcc * on 2017/9/7. */
- @XmlAccessorType(XmlAccessType.FIELD)
- public class ITEM {
-
- @XmlAttribute(name = "key")
- private String key;
-
- @XmlAttribute(name = "val")
- private String val;
-
- public String getVal() {
- return val;
- }
-
- public void setVal(String val) {
- this.val = val;
- }
-
- public String getKey() {
-
- return key;
- }
-
- public void setKey(String key) {
- this.key = key;
- }
- }
- import org.w3c.dom.Element;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
-
- import javax.xml.bind.annotation.adapters.XmlAdapter;
- import java.util.HashMap;
- import java.util.Map;
-
- public class MapAdapter extends XmlAdapter<Object,Map<String,String>> {
-
- @Override
- public Map<String,String> unmarshal(Object datas) throws Exception {
- NodeList rowlist = ((Element) datas).getChildNodes();
- int rowCount = rowlist.getLength();;
- Map<String,String> itemMap = new HashMap<>();
- for (int i = 0; i < rowCount; i++) {
- Node detailNode = rowlist.item(i);
- String key = detailNode.getAttributes().item(0).getNodeValue();
- String value = detailNode.getAttributes().item(1).getNodeValue();
- if (key == null || "".equals(key)) {
- continue;
- }
- itemMap.put(key,value);
-
- }
- return itemMap;
-
-
- // Map<String,String> map = new HashMap<String,String>();
- // NodeList childNodes = ((Element) datas).getChildNodes();
- // for(int x=0,size=childNodes.getLength(); x<size; x++) {
- // Node childNode = childNodes.item(x);
- // if(childNode.getNodeType() == Node.ELEMENT_NODE) {
- // map.put(childNode.getLocalName(),childNode.getTextContent());
- // }
- // }
- // return map;
- }
-
- @Override
- public Object marshal(Map<String,String> v) throws Exception {
- return null;
- }
- }
- /** * 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解析。