recherche
Maisondéveloppement back-endTutoriel XML/RSSExplication détaillée du partage d'exemples de code pour l'analyse 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;

		}

	}
}

 三、运行结果:

Explication détaillée du partage dexemples de code pour lanalyse XML Sax

 四、补充说明:

1.执行顺序:

 由于Sax解析是按照xml文件的顺序来解析,当读入时,会调用startDocument()方法,当读入的时候,由于它是个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解析比较轻便。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Formats de documents RSS: Exploration de RSS 2.0 et au-delàFormats de documents RSS: Exploration de RSS 2.0 et au-delàApr 26, 2025 am 12:22 AM

RSS2.0 est une norme ouverte qui permet aux éditeurs de contenu de distribuer du contenu de manière structurée. Il contient des métadonnées riches telles que des titres, des liens, des descriptions, des dates de libération, etc., permettant aux abonnés de parcourir et d'accès rapidement au contenu. Les avantages de RSS2.0 sont sa simplicité et son évolutivité. Par exemple, il permet des éléments personnalisés, ce qui signifie que les développeurs peuvent ajouter des informations supplémentaires en fonction de leurs besoins, tels que des auteurs, des catégories, etc.

Comprendre RSS: une perspective XMLComprendre RSS: une perspective XMLApr 25, 2025 am 12:14 AM

RSS est un format basé sur XML utilisé pour publier du contenu fréquemment mis à jour. 1. RSSFeed organise les informations via la structure XML, y compris le titre, le lien, la description, etc. 2. La création de RSSFeed nécessite une écriture dans la structure XML, ajoutant des métadonnées telles que la langue et la date de sortie. 3. L'utilisation avancée peut inclure des fichiers multimédias et des informations classifiées. 4. Utilisez des outils de vérification XML pendant le débogage pour vous assurer que les éléments requis existent et sont codés correctement. 5. Optimisation de RSSFeed peut être réalisée en paginant, en mise en cache et en gardant la structure simple. En comprenant et en appliquant ces connaissances, le contenu peut être géré et distribué efficacement.

RSS dans XML: Décodage des balises, des attributs et de la structureRSS dans XML: Décodage des balises, des attributs et de la structureApr 24, 2025 am 12:09 AM

RSS est un format basé sur XML utilisé pour publier et s'abonner au contenu. La structure XML d'un fichier RSS comprend un élément racine, un élément et plusieurs éléments, chacun représentant une entrée de contenu. Lire et analyser les fichiers RSS via un analyseur XML, et les utilisateurs peuvent s'abonner et obtenir le dernier contenu.

Les avantages de XML en RSS: une plongée profonde techniqueLes avantages de XML en RSS: une plongée profonde techniqueApr 23, 2025 am 12:02 AM

XML présente les avantages des données structurées, de l'évolutivité, de la compatibilité multiplateforme et de la vérification d'analyse en RSS. 1) Les données structurées garantissent la cohérence et la fiabilité du contenu; 2) L'évolutivité permet l'ajout de balises personnalisées en fonction des besoins de contenu; 3) La compatibilité multiplateforme le fait fonctionner de manière transparente sur différents appareils; 4) Les outils analytiques et de vérification garantissent la qualité et l'intégrité du flux.

RSS dans XML: dévoiler le cœur de la syndication du contenuRSS dans XML: dévoiler le cœur de la syndication du contenuApr 22, 2025 am 12:08 AM

L'implémentation de RSS dans XML consiste à organiser le contenu via un format XML structuré. 1) RSS utilise XML comme format d'échange de données, y compris des éléments tels que les informations de canal et la liste des projets. 2) Lors de la génération de fichiers RSS, le contenu doit être organisé en fonction des spécifications et publié sur le serveur pour abonnement. 3) Les fichiers RSS peuvent être abonnés via un lecteur ou un plug-in pour mettre à jour automatiquement le contenu.

Au-delà des bases: fonctionnalités avancées du document RSSAu-delà des bases: fonctionnalités avancées du document RSSApr 21, 2025 am 12:03 AM

Les fonctionnalités avancées de RSS incluent des espaces de noms de contenu, des modules d'extension et des abonnements conditionnels. 1) L'espace de noms de contenu étend les fonctionnalités RSS, 2) des modules étendus tels que Dublincore ou iTunes pour ajouter des métadonnées, 3) les entrées de filtres d'abonnement conditionnels en fonction de conditions spécifiques. Ces fonctions sont implémentées en ajoutant des éléments XML et des attributs pour améliorer l'efficacité de l'acquisition d'informations.

L'épine dorsale XML: comment les aliments RSS sont structurésL'épine dorsale XML: comment les aliments RSS sont structurésApr 20, 2025 am 12:02 AM

RSSFeedsUsexmltostructureContenSupdates.1)

RSS & XML: Comprendre le duo dynamique du contenu WebRSS & XML: Comprendre le duo dynamique du contenu WebApr 19, 2025 am 12:03 AM

RSS et XML sont des outils pour la gestion du contenu Web. RSS est utilisé pour publier et s'abonner au contenu, et XML est utilisé pour stocker et transférer des données. Ils travaillent avec la publication de contenu, les abonnements et la mise à jour push. Des exemples d'utilisation comprennent les articles de blog RSS Publishing et le stockage des informations sur le livre.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

VSCode Windows 64 bits Télécharger

VSCode Windows 64 bits Télécharger

Un éditeur IDE gratuit et puissant lancé par Microsoft

MantisBT

MantisBT

Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit