java用DefaultHandler解析XML格式数据
来源:互联网 发布:最准的掐指算法桃花 编辑:程序博客网 时间:2024/06/02 08:34
XML格式数据,即可扩展标记语言(标准通用标记语言的子集)是一种简单的数据存储语言。
//DefaultHandler解析XML格式数据class ParserXml extends DefaultHandler{ /* * 使用stack数据结构,它是后进先出的特点 */ private Stack<String> stack = new Stack<String>(); //返回的保存着配置文件路径的字符串数组 ArrayList<String> list=new ArrayList<String>(); //定义变量用来保存数据 private String path1; private String path2; private String addr; private String port; private String URL; //开始解析 public void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException { //qName:表示元素的名字,标签的名字。 stack.push(qName); //将元素名字压到栈顶 } //解析 public void characters(char[] ch, int start, int length) throws SAXException { //peek()把栈中的值拿出来,当不弹出来,只取出值而已 //pop()把栈中的值弹出来 String tag = stack.peek(); //在输出元素内容之前,我们必须知道当前元素是哪一个元素,所以我们要进行判断 if("path1".equals(tag)){ //提取元素内容 path1 = new String(ch, start, length); } else if("path2".equals(tag)){ path2 = new String(ch, start, length); }else if("addr".equals(tag)) { addr=new String(ch, start, length); } else if("port".equals(tag)){ port=new String(ch, start, length); }else if("URL".equals(tag)) { URL=new String(ch, start, length); } } //结束解析 public void endElement(String uri, String localName, String qName) throws SAXException { //遇到元素结尾,表示该元素已经解析完毕,需要从栈中弹出 stack.pop(); //monitorpath下的元素 if("monitorpath".equals(qName)) { list.add(path1); list.add(path2); } //ftp下的元素 else if("ftp".equals(qName)) { list.add(addr); list.add(port); } //DataBase下的元素 else if("DataBase".equals(qName)) { list.add(URL); } } public ArrayList<String> Xmlreturn(String path,ParserXml xh) { //创建解析工厂 SAXParserFactory factory = SAXParserFactory.newInstance(); //得到SAX的解析器 try { SAXParser parser = factory.newSAXParser(); parser.parse(new File(path), xh); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } //返回数据集合 return list; }public static void main(String[] args){ ParserXml parserXml=new ParserXml(); //传入xml数据的路径和解析工厂 ArrayList<String> arrayList=parserXml.Xmlreturn("path.xml",parserXml); for(String s:arrayList) { System.out.println(s); }}}
上面是解析xml的代码,将如下xml格式数据和工程放在一起即可。路径也可以自己定义输入。
<?xml version="1.0" encoding="UTF-8"?><user> <!--目录监控的信息--> <monitorpath> <path1>E:\\Listentest</path1> <path2>null</path2> </monitorpath> <!--FTP服务器的链接信息--> <ftp> <addr>127.0.0.1</addr> <port>21</port> </ftp> <DataBase> <URL>jdbc:mysql://127.0.0.1:3306/dataaudit</URL> </DataBase></user>
阅读全文
0 0
- java用DefaultHandler解析XML格式数据
- 用DefaultHandler解析XML的Demo
- Java解析xml格式数据
- 使用DefaultHandler无法完全解析XML的CDATA数据的问题
- 解析XML格式数据
- 解析XML格式数据
- 解析XML格式数据
- 解析XML格式数据
- 解析XML格式数据
- xml格式数据解析
- 解析XML格式数据
- 解析 XML格式数据
- 详解使用sax解析xml文件的DefaultHandler处理类
- 详解使用sax解析xml文件的DefaultHandler处理类
- Android之DefaultHandler的生命周期(解析XML的过程)
- 详解使用sax解析xml文件的DefaultHandler处理类
- Android开发之使用DefaultHandler处理XML数据
- DOM解析XML格式数据
- POJ 1258 Agri-Net 【最小生成树入门题目】
- Ubuntu14.04下opencv3和opencv2共存和使用方法
- H5基础(2)-HTML5新的结构元素
- fork之后,子进程从父进程那继承了什么
- 长沙理工大学第十二届ACM大赛 C 安卓图案解锁
- java用DefaultHandler解析XML格式数据
- 加载
- 评估指标
- [持续更新]appium + java 真机测试遇到的问题
- lvs-dr中的arp内核参数
- 455. Assign Cookies
- 99%的人理解错 HTTP 中 GET 与 POST 的区别
- Bubble Cup X
- 在ubuntu16.04下载&编译android源代码