jaxb解析xml
来源:互联网 发布:淘宝怎么更改实名认证 编辑:程序博客网 时间:2024/05/20 08:44
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解析。
阅读全文
0 0
- JAXB解析xml
- JAXB解析XML
- JAXB解析xml
- JAXB解析XML
- JAXB解析xml
- jaxb解析xml
- JAXB解析xml实例
- JAXB解析xml
- JAXB解析XML
- JAXB解析xml
- JAXB解析生成xml
- jaxb解析xml
- JAXB解析XML
- JAXB解析XML文件
- jaxb解析xml
- 使用JAXB快速解析XML
- Jaxb对XML的解析
- jaxb xml生成与解析
- network programming重点回顾
- java核心技术卷 之创建框架
- 如何查看文件夹被什么程序使用
- 排序算法梳理
- Python基础笔记
- jaxb解析xml
- 前端——第四天
- Redis常用方法
- Pointers on C——10 Structures and Unions.4
- 数字反序列输出
- 回声问题和回声消除技术及在可视监控对讲、楼宇对讲等领域的应用综述
- linux操作
- 旋转按钮-CSpinButtonCtrl
- 智能家居必备的以下几款科技