使用 SAX 解析XML 文件,不说那么多,贴代码:@H_301_1@ @H_301_1@ 解析xml:@H_301_1@
@H_301_1@
package com.example.xmldemo; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; /** * 任务图形xml解析 * @author cyj * */ public class XMLPaserHandle extends DefaultHandler { final int MISSION = 1; final int ESRIGEOMETRYPOINT = 2;//点 final int RECORD = 3; final int FID = 4; final int NAME = 5; final int GUID = 6; final int POINTS = 7; final int ESRIGEOMETRYPOLYLINE = 8;//线 final int ESRIGEOMETRYPOLYGON = 9;//面 int currentstate = 0; int recordState = 0; private Map<String,List<MissionRecordPO>> missions; /**点**/ private List<MissionRecordPO> pointMissionRecordPO; /**线**/ private List<MissionRecordPO> polylineMissionRecordPO; /**面**/ private List<MissionRecordPO> polygonMissionRecordPO; /**记录**/ private MissionRecordPO missionRecordPO; /**<mission guid="dec20ec7-e019-41c1-9ec0-9b57792eb27b"> 对应guid**/ private String missionGuid = null; public XMLPaserHandle(){} public Map<String,List<MissionRecordPO>> getMissions(){ return this.missions; } @Override public void startDocument() throws SAXException { missions = new HashMap<String,List<MissionRecordPO>>(); } @Override public void endDocument() throws SAXException { } @Override public void startElement(String uri,String localName,String qName,Attributes attributes) throws SAXException { //String missionGuid = attributes.getValue("guid"); if(localName.equalsIgnoreCase("mission")){ missionGuid = attributes.getValue("guid"); currentstate = 0; return; } if(localName.equalsIgnoreCase(MissionRecordPO.IMPORT_XML_NODE_NAME_POINT)){ pointMissionRecordPO = new ArrayList<MissionRecordPO>(); currentstate = ESRIGEOMETRYPOINT; return; } if(localName.equalsIgnoreCase(MissionRecordPO.IMPORT_XML_NODE_NAME_POLYLINE)){ polylineMissionRecordPO = new ArrayList<MissionRecordPO>(); currentstate = ESRIGEOMETRYPOLYLINE; return; } if(localName.equalsIgnoreCase(MissionRecordPO.IMPORT_XML_NODE_NAME_POLYGON)){ polygonMissionRecordPO = new ArrayList<MissionRecordPO>(); currentstate = ESRIGEOMETRYPOLYGON; return; } if(localName.equalsIgnoreCase("record")){ missionRecordPO = new MissionRecordPO(); missionRecordPO.setMissionGuid(missionGuid); //currentstate = RECORD; return; } if(localName.equalsIgnoreCase("fid")){ recordState = FID; return; } if(localName.equalsIgnoreCase("name")){ recordState = NAME; return; } if(localName.equalsIgnoreCase("guid")){ recordState = GUID; return; } if(localName.equalsIgnoreCase("points")){ recordState = POINTS; return; } recordState = 0; currentstate = 0; } @Override public void endElement(String uri,String qName) throws SAXException { // TODO Auto-generated method stub if(localName.equalsIgnoreCase("mission")){ return; } if(localName.equalsIgnoreCase(MissionRecordPO.IMPORT_XML_NODE_NAME_POINT)){ missions.put(MissionRecordPO.IMPORT_XML_NODE_NAME_POINT,pointMissionRecordPO); return; } if(localName.equalsIgnoreCase(MissionRecordPO.IMPORT_XML_NODE_NAME_POLYLINE)){ missions.put(MissionRecordPO.IMPORT_XML_NODE_NAME_POLYLINE,polylineMissionRecordPO); return; } if(localName.equalsIgnoreCase(MissionRecordPO.IMPORT_XML_NODE_NAME_POLYGON)){ missions.put(MissionRecordPO.IMPORT_XML_NODE_NAME_POLYGON,polygonMissionRecordPO); return; } if(localName.equalsIgnoreCase("record")){ if(ESRIGEOMETRYPOINT == currentstate){ pointMissionRecordPO.add(missionRecordPO); }else if(ESRIGEOMETRYPOLYLINE == currentstate){ polylineMissionRecordPO.add(missionRecordPO); }else if(ESRIGEOMETRYPOLYGON == currentstate){ polygonMissionRecordPO.add(missionRecordPO); } return; } } @Override public void characters(char[] ch,int start,int length) throws SAXException { // TODO Auto-generated method stub String theString = new String(ch,start,length); theString = theString.trim(); if(null == theString || "".equals(theString) || "\n".equals(theString)){ //currentstate = 0; return; } switch(recordState){ case FID: missionRecordPO.setFid(theString); // currentstate = 0; break; case NAME: missionRecordPO.setName(theString); //currentstate = 0; break; case GUID: missionRecordPO.setGuid(theString); //currentstate = 0; break; case POINTS: missionRecordPO.setPoints(theString); // currentstate = 0; break; default: return; } } }@H_301_1@ @H_301_1@
@H_301_1@