cari
Rumahpembangunan bahagian belakangTutorial XML/RSS详解对XML进行Sax解析的示例代码分享

XML进行Sax解析:

 一、对XML进行Sax解析:

  Sax解析XML是事件驱动的,安装XML的顺序一步一步进行解析的.优点不用事先调入整个文档,占用资源少,缺点是事件过后,若没保存数据,那么数据就丢了;无状态性;从事件中只能得到文本,但不知该文本属于哪个元素.

 二、实现:

 1.创建一个XMl文档:

<?xml version="1.0" encoding="UTF-8"?>
<oracle >
    <user id="1" >
       <name>scott</name>
       <pwd>scott</pwd>
    </user>

    <user id="2">
       <name>sys</name>
       <pwd>sys</pwd>
    </user>

    <user id="3">
       <name>system</name>
       <pwd>system</pwd>
    </user>
    
</oracle>

 2.开始解析:

package Sax解析Xml;

import java.io.File;
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.helpers.DefaultHandler;

public class SaxParser {

	public static void main(String[] args) {
		
		// 1.实例化SaxParserFactory对象
		SAXParserFactory factory = SAXParserFactory.newInstance();
		try {
			// 2.创建解析器:
			SAXParser saxParser = factory.newSAXParser();

			// 3.获取需要解析的文档,生成解析器,解析文档
			File xmlFile = new File("myXml\\cb.xml");
			MyHandler handler = new MyHandler();

			// 开始解析:
			saxParser.parse(xmlFile, handler);

		} catch (ParserConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SAXException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static class MyHandler extends DefaultHandler {

		// 作用是来记录解析的上一个节点的名称
		private String preTag = null;
		
		private boolean ifEnd =false;
		private String getName;
		private String getPwd;

		@Override
		public void characters(char[] ch, int start, int length)
				throws SAXException {
			// TODO Auto-generated method stub
			// super.characters(ch, start, length);
			if (preTag != null) {
				if ("name".equals(preTag)) {		
					getName = new String(ch, start, length);
				} else if ("pwd".equals(preTag)) {
				    getPwd = new String(ch, start, length);
				    ifEnd=true;

				    System.out.println("   <name>"+getName+"</name>");
                    System.out.println("   <pwd>"+getPwd+"</pwd>");
				}

			}
		}

		@Override
		public void endDocument() throws SAXException {
			// TODO Auto-generated method stub
			// super.endDocument();
			System.out.println(" </oracle>");
			System.out.println("--------------------------");
			System.out.println("解析XML完毕");
		}

		@Override
		public void endElement(String uri, String localName, String qName)
				throws SAXException {
			// TODO Auto-generated method stub
               if(ifEnd==true){
            System.out.println("  </user>");
            ifEnd=false;
            }
			//当一个标签解析完后,preTag设置为null;
			preTag = null;
			
			
		}

		@Override
		public void startDocument() throws SAXException {
			// TODO Auto-generated method stub
			System.out.println("开始解析XML文件");
			System.out.println("------------------------------");
			System.out.println("<?xml version="+"\""+1.0+"\""+ "encoding="+"\""+"UTF-8"+"\""+"?"+">");
			System.out.println(" <oracle>");
			

		}

		@Override
		public void startElement(String uri, String localName, String qName,
				Attributes attributes) throws SAXException {
			// TODO Auto-generated method stub
           // <user id="1" >
			if ("user".equals(qName)) {
				String s = qName;
				String s1 = attributes.getValue(0);// Id
				String s2 = attributes.getLocalName(0);
				//System.out.println(s + s1 + s2);
				System.out.println("  <"+qName+" "+"id="+"\""+s1+"\""+">");
				

			}
			preTag = qName;

		}

	}
}

 三、运行结果:

1383.png

 四、补充说明:

1.执行顺序:

 由于Sax解析是按照xml文件的顺序来解析,当读入2d7d637517892ce2316cecc020220e96时,会调用startDocument()方法,当读入94719323359f8605bfe4a0f96ce8d039的时候,由于它是个ElementNode,所以会调用startElement(String uri, String localName, String qName, Attributes attributes),当要得到oracle孩子的信息是,就会调用characters(char[] ch, int start, int length)方法。

2.内部类加static关键字:

 内部类是动态的,也就是开头以public class开头。而主程序是public static class main。在Java中,类中的静态方法不能直接调用动态方法。只有将某个内部类修饰为静态类,然后才能够在静态类中调用该类的成员变量成员方法。所以在不做其他变动的情况下,最简单的解决办法是将public class改为public static class. 

3.startElement(String uri, String localName, String qName,Attributes attributes) 方法的参数解释:

 五、总结:

 今天总算把对XML的两种解析方法搞了一遍,当初老师让写,自己不写,大概写了个Sax,现在都看不懂,我也是醉了,通过两种方法,我觉得Sax解析比较轻便。

Atas ialah kandungan terperinci 详解对XML进行Sax解析的示例代码分享. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Dokumen RSS: Asas Sindikasi WebDokumen RSS: Asas Sindikasi WebApr 18, 2025 am 12:04 AM

Dokumen RSS adalah fail berstruktur berasaskan XML yang digunakan untuk menerbitkan dan melanggan kandungan yang sering dikemas kini. Fungsi utamanya termasuk: 1) kemas kini kandungan automatik, 2) pengagregatan kandungan, dan 3) meningkatkan kecekapan pelayaran. Melalui RSSFEED, pengguna boleh melanggan dan mendapatkan maklumat terkini dari sumber yang berbeza tepat pada masanya.

Penyahkodan RSS: Struktur XML suapan kandunganPenyahkodan RSS: Struktur XML suapan kandunganApr 17, 2025 am 12:09 AM

Struktur XML RSS termasuk: 1. XML Deklarasi dan versi RSS, 2. Saluran (saluran), 3. Item. Bahagian ini membentuk asas fail RSS, yang membolehkan pengguna mendapatkan dan memproses maklumat kandungan dengan menghuraikan data XML.

Cara Menguruskan dan Menggunakan Suapan RSS Berasaskan XMLCara Menguruskan dan Menggunakan Suapan RSS Berasaskan XMLApr 16, 2025 am 12:05 AM

Rssfeedsusexmltosyndicatecontent; parsingtheminvolvesloadingxml, navigatingitssstructure, andextractingdata.applicationsincludeBuildingNewsaggregatorsandtrackingpodcastepisodes.

Dokumen RSS: Bagaimana mereka menyampaikan kandungan kegemaran andaDokumen RSS: Bagaimana mereka menyampaikan kandungan kegemaran andaApr 15, 2025 am 12:01 AM

Dokumen RSS berfungsi dengan menerbitkan kemas kini kandungan melalui fail XML, dan pengguna melanggan dan menerima pemberitahuan melalui pembaca RSS. 1. Penerbit Kandungan mencipta dan mengemas kini dokumen RSS. 2. Pembaca RSS kerap mengakses dan memasangkan fail XML. 3. Pengguna melayari dan membaca kandungan yang dikemas kini. Contoh Penggunaan: Langgan suapan RSS TechCrunch, hanya salin pautan ke pembaca RSS.

Suapan bangunan dengan XML: Panduan tangan ke RSSSuapan bangunan dengan XML: Panduan tangan ke RSSApr 14, 2025 am 12:17 AM

Langkah -langkah untuk membina RSSFeed menggunakan XML adalah seperti berikut: 1. Buat elemen akar dan tetapkan versi; 2. Tambah elemen saluran dan maklumat asasnya; 3. Tambah elemen kemasukan, termasuk tajuk, pautan dan keterangan; 4. Tukar struktur XML ke rentetan dan outputnya. Dengan langkah -langkah ini, anda boleh membuat RSSFeed yang sah dari awal dan meningkatkan fungsinya dengan menambahkan elemen tambahan seperti tarikh pelepasan dan maklumat pengarang.

Membuat Dokumen RSS: Tutorial Langkah demi LangkahMembuat Dokumen RSS: Tutorial Langkah demi LangkahApr 13, 2025 am 12:10 AM

Langkah -langkah untuk membuat dokumen RSS adalah seperti berikut: 1. Tulis dalam format XML, dengan elemen akar, termasuk unsur -unsur. 2. Tambah, dan sebagainya. Unsur untuk menerangkan maklumat saluran. 3. Tambah elemen, masing -masing mewakili kemasukan kandungan, termasuk ,,,,,,,,,,,. 4. Secara pilihan menambah dan elemen untuk memperkayakan kandungan. 5. Pastikan format XML betul, gunakan alat dalam talian untuk mengesahkan, mengoptimumkan prestasi dan menyimpan kandungan yang dikemas kini.

Peranan XML dalam RSS: asas kandungan sindiketPeranan XML dalam RSS: asas kandungan sindiketApr 12, 2025 am 12:17 AM

Peranan teras XML dalam RSS adalah untuk menyediakan format data standard dan fleksibel. 1. Ciri -ciri bahasa dan markup XML menjadikannya sesuai untuk pertukaran data dan penyimpanan. 2. RSS menggunakan XML untuk membuat format piawai untuk memudahkan perkongsian kandungan. 3. Permohonan XML dalam RSS termasuk unsur -unsur yang menentukan kandungan suapan, seperti tajuk dan tarikh pelepasan. 4. Kelebihan termasuk penyeragaman dan skalabiliti, dan cabaran termasuk keperluan sintaks dokumen dan ketat. 5. Amalan terbaik termasuk mengesahkan kesahihan XML, memastikan ia mudah, menggunakan CDATA, dan sentiasa mengemas kini.

Dari XML ke Kandungan Boleh Dibaca: Demystifying RSS FeedDari XML ke Kandungan Boleh Dibaca: Demystifying RSS FeedApr 11, 2025 am 12:03 AM

Rssfeedsarexmldocumentsedforcontentaggregationanddistribution.totransformthemintoreadableContent: 1) ParsethexmlusingLibrariesLikeFeedParserinpython.2)

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual