
已经知道节点元素时使用getValue("name") 获取节点属性值
不知道节点元素时使用元素下标i getValue(i) 获取节点属性值
重写startElement方法
重写starElement方法,用来解析xml元素
创建SAXParserHandler类继承DefaultHandler方法,重写startDoucment和
endDocument方法
SAXParseHandler继承DefalutHandler类,重写starDocument和endDocument
SAX解析XML文件的结点属性:
重写startElement(String uri, String localName, String qName,Attributes attributes)方法,
获取属性名:attributes.getValue(index);
获取属性值:attributes.getValue(index);
package test;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class SAXParserHandler extends DefaultHandler {
/*
*用来标识解析开始
*/
@Override
public void startDocument() throws SAXException {
super.startDocument();
System.out.println("SAX解析开始");
}
/*
*用来标识解析结束
*/
@Override public void endDocument() throws SAXException {
super.endDocument();
System.out.println("SAX解析结束");
}
/*
*解析xml元素
*/
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// 调用DefaultHandler类的startElement方法
super.startElement(uri, localName, qName, attributes);
//开始解析book元素的属性
if (qName.equals("book")){
String value = attributes.getValue("id");
System.out.println(value);
}
}
}
/**
* 用来遍历xml文件的开始标签
*/
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
//调用DefaultHandler类的startElement()方法
super.startElement(uri, localName, qName, attributes);
//开始解析book元素的属性
if(qName.equals("book")){
// //已知book元素下属性的名称,根据属性名称获取属性值
// String value = attributes.getValue("id");
// System.out.println("book的属性值是:"+value);
//不知道book元素下属性的名称以及个数,如何获取属性名以及属性值
int num = attributes.getLength();
for(int i=0;i<num;i++){
System.out.print("book元素的第"+(i+1)+"个属性名:"+attributes.getQName(i));
System.out.println("--属性值:"+attributes.getValue(i));
}
}
}
获取xml的标签
开始:startElement(String uri, String localName, String qName,Attributes attributes)
获取属性名:attributes.getQName(i);获取属性值:attributes.getValue(i)
结束:endElement(String uri, String localName, String qName)
解析xml元素(重写startElement()方法)
1. 调用DefaultHanlder 的startElement()方法
super.startElement(uri,localName,qName,attributes);
2. 开始解析book元素属性
/**
* 解析xml元素
*/
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// 调用父类(DefaultHandler)的startElement方法
super.startElement(uri, localName, qName, attributes);
// 开始解析book元素的属性
if (qName.equals("book")) {
// //已知book元素下属性的名称,根据属性名称获取属性值
// String value = attributes.getValue("id");
// System.out.println("book的属性值是:" + value);
// 不知道book元素下属性的名称以及个数,如何获取属性名以及属性值
int num = attributes.getLength();
for (int i = 0; i < num; i++) {
System.out.print("book元素的第" + (i + 1) + "个属性名是:"
+ attributes.getQName(i));
System.out.println("---属性值是:" + attributes.getValue(i));
}
}
}