已经知道节点元素时使用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));
}
}
}