jaxp的sax解析操作
xml檔案
<?xml version="1.0" encoding="UTF-8"?>
<person>
<p1>
<name>aa</name>
<age>20</age>
</p1>
<p1>
<name>bb</name>
<age>30</age>
</p1>
</person>
java程式碼:
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;
public class TestSax {
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/p1.xml", new MyDefault2());
}
}
//獲取所有name元素的值
//獲取第一個name元素的值
class MyDefault2 extends DefaultHandler{
//int idx = 1;
boolean flag = false;
public void characters(char[] ch, int start, int length) throws SAXException {
super.characters(ch, start, length);
//當flag是true的時候,表示解析到name元素
if(flag==true/*&&idx==1*/) {
System.out.println(new String(ch,start,length));
}
}
public void endElement(String uri, String localName, String qName) throws SAXException {
super.endElement(uri, localName, qName);
if("name".equals(qName)) {
flag = false;
//idx++;
}
}
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);
//判斷qName是否是name元素
if("name".equals(qName)) {
flag = true;
}
}
}
class MyDefault1 extends DefaultHandler{
public void characters(char[] ch, int start, int length) throws SAXException {
super.characters(ch, start, length);
System.out.print(new String(ch,start,length));
}
public void endElement(String uri, String localName, String qName) throws SAXException {
super.endElement(uri, localName, qName);
System.out.print("<"+qName+">");
}
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);
System.out.print("<"+qName+">");
}
}
相關文章
- 使用JAXP進行DOM解析_SAX解析
- 使用JAXP進行SAX解析(XMLReaderFactory、XMLReader 、SAXParserFactory與SAXParser)XML
- 關於SAX,DOM,JAXP,JDOM,DOM4J的一些理解
- DOM解析和SAX解析
- dom解析和sax解析的區別
- sax解析例子演示
- XML解析-最快的方式SAXXML
- 使用jaxp解析器dom方式對xml節點進行操作XML
- java使用sax解析xmlJavaXML
- 利用JAXP解析xml中遇到的問題XML
- python使用SAX解析xmlPythonXML
- XML解析的兩種方式DOM和SAXXML
- 使用JAXP進行DOM解析( DocumentBuilderFactory、DocumentBuilder、Document)UI
- 關於SAX解析xml檔案的問題XML
- JAVA-使用SAX解析XML資料JavaXML
- Android系列--DOM、SAX、Pull解析XMLAndroidXML
- python 解析xml 檔案: SAX方式PythonXML
- Python解析xml大檔案(sax)PythonXML
- 使用JAXP對xml文件進行DOM解析基礎XML
- SAX無法正確解析日期資料
- 用Java結合SAX 2.0 解析XML文件 (轉)JavaXML
- :Android網路程式設計--XML之解析方式:SAXAndroid程式設計XML
- 四種操作xml的方式: SAX, DOM, JDOM , DOM4J的比較XML
- jaxp程式問題sos
- Java解析XML彙總(DOM/SAX/JDOM/DOM4j/XPath)JavaXML
- SAX解析XML檔案有關characters的最大長度2048的問題XML
- XML的四種解析器(dom_sax_jdom_dom4j)原理及效能比較[收藏]XML
- Sax 解析xml檔案時, 資料資訊不完整問題解決方法XML
- SAX處理XML例項XML
- grant 操作硬解析
- JAXP 專述??Sun 的 Java API for XML 語法分析(轉)JavaAPIXML語法分析
- 在JAXP中透明的快取XSL轉換器 (轉)快取
- JAXP 再述??Sun 的 Java API for XML Parsing,1.1 版(轉)JavaAPIXML
- java Integer中的方法解析(位操作)Java
- java中四種操作(DOM、SAX、JDOM、DOM4J)xml方式詳解與比較JavaXML
- JAVA與DOM解析器提高(DOM/SAX/JDOM/DOM4j/XPath) 學習筆記二Java筆記
- java流的中間操作原始碼解析Java原始碼
- Mybatis:CRUD操作及配置解析MyBatis