使用SAX事件驱动模型解析xml数据:
sax的工作原理简单地说就是对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结束、文档(document)结束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。以下是创建SAX解析的步骤:
1. 创建SAXParserFactory对象
SAXParserFactory factory = SAXParserFactory.newInstance();
2. 创建SAXReader对象
SAXReader reader = factory.newwSAXParser().getXMLReader();
3. 为XMLReader设置内容处理器,当读取xml文件时里面相应的函数会被调用。MyContentHandler这个类我们选择继承DefaultHandler并且实现相应的方法
reader.setContentHandler(new MyContentHandler());
4. 解析数据
reader.parse(new InputSource(new StringReader(这就是xml数据,不管是网络上的还是本地的)));
DefaultHandler类中部分方法的述解:namespaceURI是xml文件的命名空间;localName是不包含前缀的元素名;qName是包含前缀的元素名;attr就是属性,它相当于数组
public void startElement(String namespaceURI , String localName , String qName , Attribute attr) throws SAXException {
tagName = loaclName;
if(localName.equal("元素名")){
for(int i=0 ; i<attr.getLength() ; i++){
System.out.print("输出属性名字:"+attr.getLocalName(i));
System.out.print("输出属性值:"+attr.getValue(i));
}
}
}