En Java, il existe deux fa?ons d'analyser les documents XML de manière native, à savoir?: l'analyse Dom et l'analyse Sax.
L'analyse Dom est puissante et peut être ajoutée, supprimée, modifiée et vérifiée. Le document XML sera traité. en tant qu'objet document pendant le fonctionnement La méthode est lue dans la mémoire, elle convient donc aux petits documents
L'analyse Sax lit le contenu ligne par élément du début à la fin. C'est plus gênant à modifier, mais c'est le cas. adapté aux gros documents en lecture seule
Cet article explique principalement l'analyse Sax, et le reste sera laissé de c?té
Sax utilise une approche événementielle pour analyser les documents. Pour faire simple, c'est comme regarder un film au cinéma. Vous pouvez le regarder du début à la fin sans revenir en arrière (Dom peut le lire d'avant en arrière)
En train de regarder un film, chaque. chaque fois que vous rencontrez un complot, une larme, un frottement d'épaule, vous mobiliserez votre cerveau et vos nerfs pour recevoir ou traiter cette information
De même, lors du processus d'analyse de Sax, en lisant le début et la fin du document, et le début et la fin de l'élément déclencheront certaines méthodes de rappel, vous pouvez effectuer le traitement des événements correspondant dans ces méthodes de rappel
Les quatre méthodes sont?: startDocument(), endDocument(), startElement(), endElement
De plus, une lecture légère Il ne suffit pas d'aller au n?ud. Nous avons également besoin de la méthode caractères() pour traiter soigneusement le contenu contenu dans l'élément
En rassemblant ces méthodes de rappel, une classe. est formé, qui est le déclencheur dont nous avons besoin.
Généralement, le document est lu à partir de la méthode Main, mais le document est traité dans le déclencheur. Il s'agit de la méthode dite d'analyse basée sur les événements
.Comme indiqué ci-dessus, dans le déclencheur, commencez d'abord à lire le document, puis commencez à analyser les éléments un par un. Le contenu de chaque élément sera renvoyé aux caractères().
puis terminez la lecture de l'élément. Une fois tous les éléments lus, terminez l'analyse du document
Maintenant, nous commen?ons à créer la classe déclencheur. Pour créer cette classe, nous devons d'abord hériter. DefaultHandler
pour créer SaxHandler et remplacer la méthode correspondante?:
import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class SaxHandler extends DefaultHandler { /* 此方法有三個(gè)參數(shù) arg0是傳回來(lái)的字符數(shù)組,其包含元素內(nèi)容 arg1和arg2分別是數(shù)組的開(kāi)始位置和結(jié)束位置 */ @Override public void characters(char[] arg0, int arg1, int arg2) throws SAXException { String content = new String(arg0, arg1, arg2); System.out.println(content); super.characters(arg0, arg1, arg2); } @Override public void endDocument() throws SAXException { System.out.println("\n…………結(jié)束解析文檔…………"); super.endDocument(); } /* arg0是名稱空間 arg1是包含名稱空間的標(biāo)簽,如果沒(méi)有名稱空間,則為空 arg2是不包含名稱空間的標(biāo)簽 */ @Override public void endElement(String arg0, String arg1, String arg2) throws SAXException { System.out.println("結(jié)束解析元素 " + arg2); super.endElement(arg0, arg1, arg2); } @Override public void startDocument() throws SAXException { System.out.println("…………開(kāi)始解析文檔…………\n"); super.startDocument(); } /*arg0是名稱空間 arg1是包含名稱空間的標(biāo)簽,如果沒(méi)有名稱空間,則為空 arg2是不包含名稱空間的標(biāo)簽 arg3很明顯是屬性的集合 */ @Override public void startElement(String arg0, String arg1, String arg2, Attributes arg3) throws SAXException { System.out.println("開(kāi)始解析元素 " + arg2); if (arg3 != null) { for (int i = 0; i < arg3.getLength(); i++) { // getQName()是獲取屬性名稱, System.out.print(arg3.getQName(i) + "=\"" + arg3.getValue(i) + "\""); } } System.out.print(arg2 + ":"); super.startElement(arg0, arg1, arg2, arg3); } }
Document XML?:
<?xml version="1.0" encoding="UTF-8"?> <books> <book id="001"> <title>Harry Potter</title> <author>J K. Rowling</author> </book> <book id="002"> <title>Learning XML</title> <author>Erik T. Ray</author> </book> </books>
Classe de test TestDemo?:
import java.io.File; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; public class TestDemo { public static void main(String[] args) throws Exception { // 1.實(shí)例化SAXParserFactory對(duì)象 SAXParserFactory factory = SAXParserFactory.newInstance(); // 2.創(chuàng)建解析器 SAXParser parser = factory.newSAXParser(); // 3.獲取需要解析的文檔,生成解析器,最后解析文檔 File f = new File("books.xml"); SaxHandler dh = new SaxHandler(); parser.parse(f, dh); } }
Résultat de sortie?:
…………開(kāi)始解析文檔………… 開(kāi)始解析元素 books books: 開(kāi)始解析元素 book id="001"book: 開(kāi)始解析元素 title title:Harry Potter 結(jié)束解析元素 title 開(kāi)始解析元素 author author:J K. Rowling 結(jié)束解析元素 author 結(jié)束解析元素 book 開(kāi)始解析元素 book id="002"book: 開(kāi)始解析元素 title title:Learning XML 結(jié)束解析元素 title 開(kāi)始解析元素 author author:Erik T. Ray 結(jié)束解析元素 author 結(jié)束解析元素 book 結(jié)束解析元素 books …………結(jié)束解析文檔…………
Bien que ce qui précède montre correctement le processus d'exécution, la sortie est très compliquée
Afin d'exécuter ce processus plus clairement, nous pouvons également réécrire SaxHandler pour restaurer l'original document xml
Classe SaxHandler réécrite?:
import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class SaxHandler extends DefaultHandler { @Override public void characters(char[] arg0, int arg1, int arg2) throws SAXException { System.out.print(new String(arg0, arg1, arg2)); super.characters(arg0, arg1, arg2); } @Override public void endDocument() throws SAXException { System.out.println("\n結(jié)束解析"); super.endDocument(); } @Override public void endElement(String arg0, String arg1, String arg2) throws SAXException { System.out.print("</"); System.out.print(arg2); System.out.print(">"); super.endElement(arg0, arg1, arg2); } @Override public void startDocument() throws SAXException { System.out.println("開(kāi)始解析"); String s = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; System.out.println(s); super.startDocument(); } @Override public void startElement(String arg0, String arg1, String arg2, Attributes arg3) throws SAXException { System.out.print("<"); System.out.print(arg2); if (arg3 != null) { for (int i = 0; i < arg3.getLength(); i++) { System.out.print(" " + arg3.getQName(i) + "=\"" + arg3.getValue(i) + "\""); } } System.out.print(">"); super.startElement(arg0, arg1, arg2, arg3); } }
Pour plus d'articles liés aux solutions d'utilisation de sax pour analyser le XML en Java, veuillez faire attention au site Web PHP chinois?!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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

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

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

XmlischosenoveroTherformatsDuetOitsFlexibility, Human-Readabilité, androbustecosystem.1) itExcelsIndataExchangeandConfiguration.2) il est de la platform

Awell formedxmldocumentAdhestospecificruleSenuryCorrectStructure andParseabilité.1) itstartswithaproperdeclarationlike.2) ElementsMustBecorrectlyEnthesweachOveningTaghavingacorRreshingClosingTag.

XMLSCHEMACANBEEFECTECTIVEDUSEDTOCREATEVALIDANDRELIABLEXMLBYFORMINGTESTESTESPS: 1) DéfinitStructure andDatatypeSofxMlelements, 2) Userestrictions etfacetsfordata

XMLSChemaSinsuresDatainTegrityInxMlDocumentsByDefiningStructureAnForCingrules.1) Itvalidatesdataformats, comme lansurysBnSare10or13Digits.3)

XmlschemavalidationInphpisachievedUsingDocumentAndDomXpathClasseswithTheLiBxmlextension.1) LoadThexMlfilewithDomDocument.2) utilise le schemavalidateTominyIdateAgainstanxSdsChema, UsedinganExceptionIfVALIDG

Xmlenhancessoftwarearcharchicturebyimprovinghemplementation dedesignPatternslikestrategy, usine, andobserver.1) inthestrategyPattern, xmlallowsruntimestrategyswitchViaconfigurationfiles.2)

XMLBeneFitsDevelorseverswithitssimplicité, flexibilité et portabilité.1) itShiman RedingableFormatAiSSineasyDebuggging.2) PersonnalisetagsallowForAdaptabledatastectures.3) plate-forme indicedenceSureShesamlessDataExchangecrossSystems.

XMLIS "bien formé" IFitAdhestobasicsyntaxrules.tobewell formé, XMLMUST: 1) apropenerStingOfoLelements, 2) y compris la sélection, 3) Usetagscortect, 4) suivantaTributesyNTaxrules, et 5) DécllatenceCcodingIfNeneded.
