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解析。