sax解析 得到xml文檔所有內容和擷取指定標籤的值__javaweb

來源:互聯網
上載者:User
//得到xml文檔所有內容package cn.itcast.sax;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.ContentHandler;import org.xml.sax.Locator;import org.xml.sax.SAXException;import org.xml.sax.XMLReader;public class test1 {/** * sax解析xml文檔 * @throws SAXException  * @throws ParserConfigurationException  * @throws IOException  */public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {//1.建立解析工廠SAXParserFactory factory = SAXParserFactory.newInstance();//2.得到解析器SAXParser sp = factory.newSAXParser();//3.得到讀取器XMLReader reader = sp.getXMLReader();//4.設定內容處理器reader.setContentHandler(new ListHandler());//5.讀取xml文檔內容reader.parse("src/book.xml");}}//得到xml文檔所有內容class ListHandler implements ContentHandler{@Overridepublic void startElement(String uri, String localName, String qName,Attributes atts) throws SAXException {System.out.println("<" + qName + ">");for(int i = 0; atts != null && i < atts.getLength(); i++){String attName = atts.getQName(i);String attValue = atts.getValue(i);System.out.println(attName + "=" + attValue);}}@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {System.out.println(new String(ch,start,length));}@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {System.out.println("</" + qName + ">");}@Overridepublic void setDocumentLocator(Locator locator) {// TODO Auto-generated method stub}@Overridepublic void startDocument() throws SAXException {// TODO Auto-generated method stub}@Overridepublic void endDocument() throws SAXException {// TODO Auto-generated method stub}@Overridepublic void startPrefixMapping(String prefix, String uri)throws SAXException {// TODO Auto-generated method stub}@Overridepublic void endPrefixMapping(String prefix) throws SAXException {// TODO Auto-generated method stub}@Overridepublic void ignorableWhitespace(char[] ch, int start, int length)throws SAXException {// TODO Auto-generated method stub}@Overridepublic void processingInstruction(String target, String data)throws SAXException {// TODO Auto-generated method stub}@Overridepublic void skippedEntity(String name) throws SAXException {// TODO Auto-generated method stub}}//擷取指定標籤的值package cn.itcast.sax;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.ContentHandler;import org.xml.sax.Locator;import org.xml.sax.SAXException;import org.xml.sax.XMLReader;import org.xml.sax.helpers.DefaultHandler;public class Text2 {/** * sax解析xml文檔 * @throws SAXException  * @throws ParserConfigurationException  * @throws IOException  */public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {//1.建立解析工廠SAXParserFactory factory = SAXParserFactory.newInstance();//2.得到解析器SAXParser sp = factory.newSAXParser();//3.得到讀取器XMLReader reader = sp.getXMLReader();//4.設定內容處理器reader.setContentHandler(new TagValueHandler());//5.讀取xml文檔內容reader.parse("src/book.xml");}}//擷取指定標籤的值class TagValueHandler extends DefaultHandler{private String currentTag;//記住當前解析的是什麼標籤private  int needNumber = 2;//記住想擷取第幾個作者標籤的值private  int currentNumber;//當前解析的是第幾個@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {currentTag = qName;if(currentTag.equals("作者")){currentNumber++;}}@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {if("作者".equals(currentTag) && currentNumber == needNumber){System.out.println(new String(ch,start,length));}}@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {currentTag = null;}}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.