用SAX解析图片中的XML实例,代码如下:
public class saxParsingXML {public static void main(String[] args) throws Exception, Exception {
//step1:获得SAX解析器工厂
SAXParserFactory factory = SAXParserFactory.newInstance();
//step2:获得SAX解析器实例
SAXParser parser = factory.newSAXParser();
//step3:开始进行解析
parser.parse(new File("person.xml"), new MyHandler());
}
}
class MyHandler extends DefaultHandler{
private Stack<String> stack = new Stack<String>();
private String name;
private String sex;
private String age;
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
stack.push(qName);
for(int i = 0; i < attributes.getLength(); i++){
String attrName = attributes.getQName(i);
String attrValue = attributes.getValue(i);
System.out.println(attrName + "=" + attrValue);
}
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
stack.pop();//表示该元素已经解析完毕,需要从栈中弹出
if("person".equals(qName)){
System.out.println("姓名:" + name);
System.out.println("性别:" + sex);
System.out.println("年龄:" + age);
System.out.println();
}
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
String tag = stack.peek();
if("name".equals(tag)){
name = new String(ch, start, length);
}else if("sex".equals(tag)){
sex = new String(ch, start, length);
}else if("age".equals(tag)){
age = new String(ch, start, length);
}
}
}