java sax解析xml文件
来源:互联网 发布:用友网络校园招聘 编辑:程序博客网 时间:2024/05/17 10:55
1.handler类解析xml
public class MyHandler extends DefaultHandler {
private HashMap<String, String> map = null;// 存储单个解析的完整对象private List<HashMap<String, String>> list = null;// 存储所有的解析对象private String currentTag = null;// 正在解析的元素的标签private String currentValue = null;// 解析当前元素的值private String nodeName = null;// 解析当前的节点名称public MyHandler(String nodeName) { // TODO Auto-generated constructor stub this.nodeName = nodeName;}public List<HashMap<String, String>> getList() { return list;}@Overridepublic void startDocument() throws SAXException { // TODO Auto-generated method stub // 当读到第一个开始标签的时候,会触发这个方法 list = new ArrayList<HashMap<String, String>>();}@Overridepublic void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // 当遇到文档的开头的时候,调用这个方法 if (qName.equals(nodeName)) { map = new HashMap<String, String>(); } if (attributes != null && map != null) { for (int i = 0; i < attributes.getLength(); i++) { map.put(attributes.getQName(i), attributes.getValue(i)); } } currentTag = qName;}@Overridepublic void characters(char[] ch, int start, int length) throws SAXException { // TODO Auto-generated method stub // 这个方法是用来处理xml文件所读取到的内容 if (currentTag != null && map != null) { currentValue = new String(ch, start, length); if (currentValue != null && !currentValue.trim().equals("") && !currentValue.trim().equals("\n")) { map.put(currentTag, currentValue); } } currentTag = null;// 把当前的节点的对应的值和标签设置为空 currentValue = null;}@Overridepublic void endElement(String uri, String localName, String qName) throws SAXException { // TODO Auto-generated method stub // 遇到结束标记的时候,会调用这个方法 if (qName.equals(nodeName)) { list.add(map); map = null; } super.endElement(uri, localName, qName);}
}
2、取得与服务器连接的输入流
public class HttpUtils {
public HttpUtils() { // TODO Auto-generated constructor stub}public static InputStream getXML(String path) { InputStream inputStream = null; try { URL url = new URL(path); if (url != null) { HttpURLConnection connection = (HttpURLConnection) url .openConnection(); connection.setConnectTimeout(3000); connection.setDoInput(true); connection.setRequestMethod("GET"); int code = connection.getResponseCode(); if (code == 200) { inputStream = connection.getInputStream(); } } } catch (Exception e) { // TODO: handle exception } return inputStream;}
}
3、创建xml解析器
public class SaxService {
public SaxService() { // TODO Auto-generated constructor stub}public static List<HashMap<String, String>> readXML( InputStream inputStream, String nodeName) { try { // 创建一个解析xml的工厂对象 SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser parser = spf.newSAXParser();// 解析xml MyHandler handler = new MyHandler(nodeName); parser.parse(inputStream, handler); inputStream.close(); return handler.getList(); } catch (Exception e) { // TODO: handle exception } return null;}
}
4、测试类
public class Test {
public Test() { // TODO Auto-generated constructor stub}/** * @param args */public static void main(String[] args) { // TODO Auto-generated method stub String path = "http://127.0.0.1:8080/myhttp/person.xml"; InputStream inputStream = HttpUtils.getXML(path); try { List<HashMap<String, String>> list = SaxService.readXML( inputStream, "person"); for (HashMap<String, String> map : list) { System.out.println(map.toString()); } } catch (Exception e) { // TODO: handle exception }}
}
0 0
- java SAX解析XML文件
- Java Sax解析xml文件
- Java Sax解析XML文件
- Java Sax解析xml文件
- JAVA SAX解析XML文件
- Java SAX解析xml文件
- java sax解析xml文件
- java SAX解析XML文件
- Java SAX 解析xml文件
- Java 解析 XML 文件之 SAX 解析
- Java类SAX解析XML文件
- Java 使用SAX解析xml文件
- Java 使用SAX解析xml文件
- JAVA SAX 方式解析XML文件
- Java用SAX解析XML文件示例
- JAVA SAX 方式解析XML文件
- Java用SAX解析XML文件示例
- Java——SAX解析XML文件
- 自定义标签库并打成jar包
- 黑马程序员-银行调度系统
- spring mvc中访问静态文件两种方法设置
- 黑马程序员—OC之三大特性
- springmvc学习笔记(9)——ModelAndView
- java sax解析xml文件
- dp 斜率优化
- 黑马程序员——Java基础---Object类和包装类
- 简易C\C++内存池
- 正则表达式里字符串”不包含”匹配技巧
- iOS使用SSH通过USB直连 比WIFI快
- 页面报出uncaught exception: out of memory异常
- 扩大进口螺丝结顶,数量多考虑空间速度快决定书!
- 企鹅2015校招笔试之(三)C/S模型压力算法设计实现