xml的解析二

前端之家收集整理的这篇文章主要介绍了xml的解析二前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

使用jaxp的sax方式解析xml

sax方式不能实现增删改操作,只能做查询操作

打印出整个文档

执行parse方法,第一个参数xml路径,第二个参数是 事件处理器

创建一个类,继承事件处理器的类,重写里面的三个方法

获取到所有的name元素的值

  • 定义一个成员变量 flag= false
  • 判断开始方法是否是name元素,如果是name元素,把flag值设置成true
  • 如果flag值是true,在characters方法里面打印内容
  • 当执行到结束方法时候,把flag值设置成false
获取第一个name元素的值
  • 定义一个成员变量 idx=1
  • 在结束方法时候,idx+1 idx++
  • 想要打印出第一个name元素的值,在characters方法里面判断,判断flag=true 并且 idx==1,在打印内容
案例:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<person>
	<p1>
		<name>张三</name>
		<age>20</age>
	</p1>
	<p1>
		<name>李四</name>
		<age>30</age>
	</p1>
	<p1>
		<name>王五</name>
		<age>40</age>
	</p1>
	<p1>
		<name>赵六</name>
		<age>50</age>
	</p1>
</person>
package com.java.xml;

import java.io.IOException;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.SAXException;

public class TextSax {

	public static void main(String[] args) throws ParserConfigurationException,SAXException,IOException {
		/*
		 * 1.创建解析器工厂
		 * 2.创建解析器
		 * 3.执行parse方法
		 * 4.自己创建一个类继承DefaultHandler
		 * 5.重写类里面的三个方法
		 */
		//创建解析器工厂
		SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
		//创建解析器
		SAXParser saxParser = saxParserFactory.newSAXParser();
		//执行parse方法
		saxParser.parse("src/person.xml",new MyDefault());
	}
	
}
package com.java.xml;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/**
 * 实现获取所有的name元素的值
 * @author itachi
 *
 */
public class MyDefault extends DefaultHandler {

	boolean flag = false;
	int idx = 1;
	@Override
	public void startElement(String uri,String localName,String qName,Attributes attributes) throws SAXException {
		//判断qname是否是name元素
		if("name".equals(qName)) {
			flag = true;
		}
	}

	@Override
	public void endElement(String uri,String qName)
			throws SAXException {
		//把flag设置成false,表示name元素结束
		if("name".equals(qName)) {
			flag = false;
			idx++;
		}
	}

	@Override
	public void characters(char[] ch,int start,int length)
			throws SAXException {
		//当flag值是true时候,表示解析到name元素,索引是1
		if(flag == true && idx == 3) {
			System.out.println(new String(ch,start,length));
		}
	}
	
	
}

猜你在找的XML相关文章