packageparseXml;importorg.xml.sax.Attributes;importorg.xml.sax.InputSource;importorg.xml.sax.helpers.DefaultHandler;importjavax.xml.parsers.SAXParser;importjavax.xml.parsers.SAXParserFactory;importjava.util.HashMap;public class Test extendsDefaultHandler {public staticSAXParserFactory parserFactory;public staticSAXParser parser;public static HashMap map = new HashMap();
String xBondTransactableBondInformation_Id;//债券代码
SecDef secdef;
Instrmt instrmt;
@Overridepublic voidstartDocument() {
}//读取XML的
@Overridepublic voidstartElement(String uri, String localName, String qName,
Attributes attributes) {if ("SecDef".equals(qName)) {
secdef= newSecDef();
instrmt= newInstrmt();
secdef.setCentraQuoteBondIndic(attributes
.getValue("CentraQuoteBondIndic"));
secdef.setDesc(attributes.getValue("Desc"));
secdef.setInstrmt(instrmt);
}if ("Instrmt".equals(qName)) {
xBondTransactableBondInformation_Id= attributes.getValue("ID");
instrmt.setId(attributes.getValue("ID"));
instrmt.setSym(attributes.getValue("Sym"));
}
}
@Overridepublic void characters(char[] ch, int start, intlength) {
}//读取XML的后开始执行
@Overridepublic voidendElement(String uri, String localName, String qName) {
map.put(
xBondTransactableBondInformation_Id, secdef);
}
@Overridepublic voidendDocument() {
}/*** 解析方法
*
*@returnmap*/
public static HashMaploadXML(String filePath) {try{
parserFactory=SAXParserFactory.newInstance();
parser=parserFactory.newSAXParser();
Test reader= newTest();
parser.parse(newInputSource(filePath), reader);
}catch(Exception e) {
e.printStackTrace();return null;
}returnmap;
}public static HashMapresultMap;public static voidmain(String[] args) {
resultMap= loadXML("src/input/xml/test.xml");for(String key : resultMap.keySet()) {
System.out.print("key=" + key + "\t");
System.out.println("value="
+resultMap.get(key));
}
}
}