加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

jaxb解析xml

发布时间:2020-12-16 01:57:35 所属栏目:百科 来源:网络整理
导读: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备案单位

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_ACTH50cd1dd4-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_ACTH9b77287d-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_ACTH99dec929-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_ACTHe0d76c40-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解析。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读