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
Rôle de XML dans RSS: le fondement du contenu syndiquéRôle de XML dans RSS: le fondement du contenu syndiquéApr 12, 2025 am 12:17 AM

Le rôle central de XML dans RSS est de fournir un format de données standardisé et flexible. 1. La structure et les caractéristiques du langage de balisage de XML le rendent adapté à l'échange et au stockage des données. 2. RSS utilise XML pour créer un format standardisé pour faciliter le partage de contenu. 3. L'application de XML en RSS comprend des éléments qui définissent le contenu des aliments, tels que le titre et la date de sortie. 4. Les avantages incluent la normalisation et l'évolutivité, et les défis incluent des exigences de syntaxe verbeux et strictes de documents. 5. Les meilleures pratiques incluent la validation de la validité XML, la maintenance simple, l'utilisation des CDATA et la mise à jour régulièrement.

De XML au contenu lisible: démystifier les flux RSSDe XML au contenu lisible: démystifier les flux RSSApr 11, 2025 am 12:03 AM

RSSFeedsArexMLDocuments utilisé pour la contention de la variabilité et la distribution.

Existe-t-il une alternative RSS basée sur JSON?Existe-t-il une alternative RSS basée sur JSON?Apr 10, 2025 am 09:31 AM

JSONFeed est une alternative RSS basée sur JSON qui a ses avantages simplicité et facilité d'utilisation. 1) JSONFeed utilise le format JSON, qui est facile à générer et à analyser. 2) Il prend en charge la génération dynamique et convient au développement Web moderne. 3) L'utilisation de JSONFeed peut améliorer l'efficacité de la gestion du contenu et l'expérience utilisateur.

Outils de document RSS: Flux de construction, de validation et d'éditionOutils de document RSS: Flux de construction, de validation et d'éditionApr 09, 2025 am 12:10 AM

Comment construire, valider et publier RSSFeeds? 1. Build: Utilisez des scripts Python pour générer RSSFeed, y compris le titre, le lien, la description et la date de sortie. 2. Vérification: utilisez FeedValidator.org ou Python Script pour vérifier si RSSFeed est conforme aux normes RSS2.0. 3. Publier: Télécharger les fichiers RSS sur le serveur, ou utiliser Flask pour générer et publier RSSFeed dynamiquement. Grâce à ces étapes, vous pouvez gérer et partager efficacement le contenu.

Sécuriser vos flux XML / RSS: une liste de contrôle de sécurité complèteSécuriser vos flux XML / RSS: une liste de contrôle de sécurité complèteApr 08, 2025 am 12:06 AM

Méthodes pour garantir la sécurité de XML / RSSFeeds incluent: 1. Vérification des données, 2. Transmission cryptée, 3. Contrôle d'accès, 4. Journaux et surveillance. Ces mesures protègent l'intégrité et la confidentialité des données via des protocoles de sécurité du réseau, des algorithmes de chiffrement des données et des mécanismes de contrôle d'accès.

XML / RSS Interview Questions & Answers: Augmentez votre expertiseXML / RSS Interview Questions & Answers: Augmentez votre expertiseApr 07, 2025 am 12:19 AM

XML est un langage de balisage utilisé pour stocker et transférer des données, et RSS est un format basé sur XML utilisé pour publier du contenu fréquemment mis à jour. 1) XML décrit les structures de données via des balises et des attributs, 2) RSS définit une publication spécifique de balises et un contenu souscrit, 3) XML peut être créé et analysé à l'aide des nœuds XML de Python pour les expressions XPATH qui peuvent être validés par XMllint, 7), le traitement des grands fichiers XML avec SAX Parser peut optimiser les performances.

Tutoriel Advanced XML / RSS: Ace votre prochain entretien techniqueTutoriel Advanced XML / RSS: Ace votre prochain entretien techniqueApr 06, 2025 am 12:12 AM

XML est un langage de balisage pour le stockage et l'échange de données, et RSS est un format basé sur XML pour la publication du contenu mis à jour. 1. XML définit les structures de données, adaptées à l'échange de données et au stockage. 2.RSS est utilisé pour l'abonnement de contenu et utilise des bibliothèques spéciales lors de l'analyse. 3. Lors de l'analyse du XML, vous pouvez utiliser DOM ou SAX. Lors de la génération de XML et de RSS, les éléments et les attributs doivent être définis correctement.

De XML / RSS à JSON: stratégies de transformation des données modernesDe XML / RSS à JSON: stratégies de transformation des données modernesApr 05, 2025 am 12:08 AM

Utilisez Python pour convertir de XML / RSS en JSON. 1) Parse Source Data, 2) Extraire les champs, 3) Convertir en JSON, 4) Sortir JSON. Utilisez les bibliothèques XML.ETREE.ElementTree et FeedParser pour analyser XML / RSS et utilisez la bibliothèque JSON pour générer des données JSON.

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

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

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.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles