Maison développement back-end Tutoriel XML/RSS Introduction détaillée aux bases de l'analyse XML Java

Introduction détaillée aux bases de l'analyse XML Java

Mar 18, 2017 pm 04:55 PM

dom4j est un XML API Java, similaire à jdom, utilisé pour lire et écrire des fichiers XML. dom4j est une très, très excellente API Java XML avec d'excellentes performances, des fonctions puissantes et une extrême facilité d'utilisation. C'est également un logiciel open source et peut être trouvé sur SourceForge
Pour Java XML grand public En termes de performances et de fonctionnalités de l'API. et facilité d'utilisation, dom4j est excellent dans tous les aspects. De nos jours, vous pouvez constater que de plus en plus de logiciels Java utilisent dom4j pour lire et écrire du XML, comme Hibernate, y compris JAXM de Sun, qui utilise également Dom4j.
Pour développer avec Dom4j, vous devez télécharger le fichier jar correspondant de dom4j

  1. Télécharger le fichier jar correspondant de dom4j
    2.dom4j est un projet open source sur sourceforge .net, vous pouvez donc aller sur http://sourceforge.net/projects/dom4j pour télécharger la dernière version.
    L'effet après décompression du fichier zip téléchargé est le suivant :

Ouvrez dom4j - Le fichier décompressé de 1.6.1
Ici vous pouvez voir le dossier avec l'aide de la documentation et le fichier dom4j-1.6.1.jar qui doit utiliser dom4j pour analyser le fichier XML. il suffit de mettre le fichier dom4j-1.6.1.jar Après l'avoir intégré dans le projet que nous développons, nous pouvons utiliser dom4j pour le développer
Ci-dessous, je prendrai comme exemple la méthode de construction de création d'un projet Java avec Myeclipse. .
Créez d'abord un projet de démonstration, créez un fichier lib dans le projet de démonstration et placez Copiez le fichier dom4j-1.6.1.jar dans lib, puis cliquez avec le bouton droit sur le fichier dom4j-1.6.1jar
et cliquez sur Ajoutez au chemin de construction pour l'intégrer au projet.
Remarque : si vous développez un projet Web, il suffit de le copier dans web-inf/lib, et il sera automatiquement intégré au projet Web Pendant le processus de développement du projet, vous pouvez vous référer au dossier docs (document d'aide) pour trouver index.html. Ouvrez-le et cliquez sur Démarrage rapide pour apprendre dom4j pour l'analyse XML via le document d'aide.
Ci-dessous, je vais traduire et expliquer le les méthodes importantes dans l'API qui, à mon avis, sont les suivantes :

1. Dans DOM4j, obtenez Document
Il existe trois manières d'objets  :

1. Lire le fichier XML et obtenez l'objet Document

1

2

SAXReader reader = new SAXReader();               

      Document   document = reader.read(new File("csdn.xml"));

Copier après la connexion
2. Analysez le texte du formulaire XML pour obtenir l'objet Document


1

2

String text = "<csdn></csdn>";             

                Document document = DocumentHelper.parseText(text);

Copier après la connexion
3.

                                                     
Attributs de l'objet

Opérations de la méthode

1

2

Document document = DocumentHelper.createDocument();             //创建根节点 

                Element root = document.addElement("csdn");

Copier après la connexion

4. Écrivez le document dans un fichier XML

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

1.获取文档的根节点. 

      Element root = document.getRootElement(); 

    2.取得某个节点的子节点. 

      Element element=node.element(“四大名著"); 

    3.取得节点的文字 

        String text=node.getText(); 

    4.取得某节点下所有名为“csdn”的子节点,并进行遍历. 

       List nodes = rootElm.elements("csdn");  

         for (Iterator it = nodes.iterator(); it.hasNext();) {    

      Element elm = (Element) it.next();   

    // do something   } 

     5.对某节点下的所有子节点进行遍历.     

      for(Iterator it=root.elementIterator();it.hasNext();){       

        Element element = (Element) it.next();       

       // do something    } 

    6.在某节点下添加子节点 

      Element elm = newElm.addElement("朝代"); 

    7.设置节点文字.  elm.setText("明朝"); 

    8.删除某节点.//childElement是待删除的节点,parentElement是其父节点  parentElement.remove(childElment); 

    9.添加一个CDATA节点.Element contentElm = infoElm.addElement("content");contentElm.addCDATA(“cdata区域”);

Copier après la connexion

5. Chaîne

et XML Conversion

1

2

3

4

5

6

7

8

9

10

11

12

13

14

1.取得某节点下的某属性    Element root=document.getRootElement();        //属性名name 

         Attribute attribute=root.attribute("id"); 

    2.取得属性的文字 

    String text=attribute.getText(); 

    3.删除某属性 Attribute attribute=root.attribute("size"); root.remove(attribute); 

    4.遍历某节点的所有属性    

      Element root=document.getRootElement();       

       for(Iterator it=root.attributeIterator();it.hasNext();){         

           Attribute attribute = (Attribute) it.next();          

           String text=attribute.getText();         

           System.out.println(text);   

  

    5.设置某节点的属性和文字.   newMemberElm.addAttribute("name", "sitinspring"); 

    6.设置属性的文字   Attribute attribute=root.attribute("name");   attribute.setText("csdn");

Copier après la connexion

6. Cas (analyser le fichier sida.xml et effectuer une opération de caillé dessus)

1

2

3

4

5

6

7

8

9

10

1.文档中全为英文,不设置编码,直接写入的形式.   

       XMLWriter writer = new XMLWriter(new  FileWriter("ot.xml"));  

       writer.write(document);   

       writer.close(); 

    2.文档中含有中文,设置编码格式写入的形式. 

       OutputFormat format = OutputFormat.createPrettyPrint();// 创建文件输出的时候,自动缩进的格式                   

       format.setEncoding("UTF-8");//设置编码 

       XMLWriter writer = new XMLWriter(newFileWriter("output.xml"),format); 

       writer.write(document); 

       writer.close();

Copier après la connexion

1.sida.xml décrit le fonctionnement des quatre œuvres célèbres Le contenu du fichier. est la suivante

2. Opération de test d'analyse

1

2

3

4

5

6

7

8

9

10

11

1.将字符串转化为XML 

      String text = "<csdn> <java>Java班</java></csdn>"

      Document document = DocumentHelper.parseText(text); 

    2.将文档或节点的XML转化为字符串. 

       SAXReader reader = new SAXReader(); 

       Document   document = reader.read(new File("csdn.xml"));             

       Element root=document.getRootElement();     

       String docXmlText=document.asXML(); 

       String rootXmlText=root.asXML(); 

       Element memberElm=root.element("csdn"); 

       String memberXmlText=memberElm.asXML();

Copier après la connexion

Commentez de manière appropriée une partie du code pour observer l'effet d'exécution, entraînez-vous à plusieurs reprises, j'espère que vous aurez une meilleure compréhension de dom4j.

1

2

3

4

5

6

7

8

9

10

11

<?xml version="1.0" encoding="UTF-8"?> 

<四大名著> 

    <西游记 id="x001"

        <作者>吴承恩1</作者> 

        <作者>吴承恩2</作者> 

        <朝代>明朝</朝代> 

    </西游记> 

    <红楼梦 id="x002"

        <作者>曹雪芹</作者> 

    </红楼梦> 

</四大名著>

Copier après la connexion
7. Cas de conversion de chaîne et XML

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

package dom4j; 

   

import java.io.File; 

import java.io.FileOutputStream; 

import java.io.FileWriter; 

import java.io.OutputStreamWriter; 

import java.nio.charset.Charset; 

import java.nio.charset.CharsetEncoder; 

import java.util.Iterator; 

import java.util.List; 

   

import org.dom4j.Attribute; 

import org.dom4j.Document; 

import org.dom4j.Element; 

import org.dom4j.io.OutputFormat; 

import org.dom4j.io.SAXReader; 

import org.dom4j.io.XMLWriter; 

import org.junit.Test; 

   

public class Demo01 { 

   

    @Test 

    public void test() throws Exception { 

   

        // 创建saxReader对象 

        SAXReader reader = new SAXReader(); 

        // 通过read方法读取一个文件 转换成Document对象 

        Document document = reader.read(new File("src/dom4j/sida.xml")); 

        //获取根节点元素对象 

        Element node = document.getRootElement(); 

        //遍历所有的元素节点          listNodes(node); 

   

        // 获取四大名著元素节点中,子节点名称为红楼梦元素节点。 

        Element element = node.element("红楼梦"); 

        //获取element的id属性节点对象 

        Attribute attr = element.attribute("id"); 

        //删除属性          element.remove(attr); 

        //添加新的属性 

        element.addAttribute("name", "作者"); 

        // 在红楼梦元素节点中添加朝代元素的节点 

        Element newElement = element.addElement("朝代"); 

        newElement.setText("清朝"); 

        //获取element中的作者元素节点对象 

        Element author = element.element("作者"); 

        //删除元素节点 

        boolean flag = element.remove(author); 

        //返回true代码删除成功,否则失败          System.out.println(flag); 

        //添加CDATA区域 

        element.addCDATA("红楼梦,是一部爱情小说."); 

        // 写入到一个新的文件中          writer(document); 

   

    

   

    /**

     * 把document对象写入新的文件

     

     * @param document

     * @throws Exception

     */ 

    public void writer(Document document) throws Exception { 

        // 紧凑的格式 

        // OutputFormat format = OutputFormat.createCompactFormat(); 

        // 排版缩进的格式 

        OutputFormat format = OutputFormat.createPrettyPrint(); 

        // 设置编码 

        format.setEncoding("UTF-8"); 

        // 创建XMLWriter对象,指定了写出文件及编码格式 

        // XMLWriter writer = new XMLWriter(new FileWriter(new 

        // File("src//a.xml")),format); 

        XMLWriter writer = new XMLWriter(new OutputStreamWriter( 

                new FileOutputStream(new File("src//a.xml")), "UTF-8"), format); 

        // 写入          writer.write(document); 

        // 立即写入          writer.flush(); 

        // 关闭操作          writer.close(); 

    

   

    /**

     * 遍历当前节点元素下面的所有(元素的)子节点

     

     * @param node

     */ 

    public void listNodes(Element node) { 

        System.out.println("当前节点的名称::" + node.getName()); 

        // 获取当前节点的所有属性节点 

        List<Attribute> list = node.attributes(); 

        // 遍历属性节点 

        for (Attribute attr : list) { 

            System.out.println(attr.getText() + "-----" + attr.getName() 

                    + "---" + attr.getValue()); 

        

   

        if (!(node.getTextTrim().equals(""))) { 

            System.out.println("文本内容::::" + node.getText()); 

        

   

        // 当前节点下面子节点迭代器 

        Iterator<Element> it = node.elementIterator(); 

        // 遍历 

        while (it.hasNext()) { 

            // 获取某个子节点对象 

            Element e = it.next(); 

            // 对子节点进行遍历              listNodes(e); 

        

    

   

    /**

     * 介绍Element中的element方法和elements方法的使用

     

     * @param node

     */ 

    public void elementMethod(Element node) { 

        // 获取node节点中,子节点的元素名称为西游记的元素节点。 

        Element e = node.element("西游记"); 

        // 获取西游记元素节点中,子节点为作者的元素节点(可以看到只能获取第一个作者元素节点) 

        Element author = e.element("作者"); 

   

        System.out.println(e.getName() + "----" + author.getText()); 

   

        // 获取西游记这个元素节点 中,所有子节点名称为作者元素的节点 。   

        List<Element> authors = e.elements("作者"); 

        for (Element aut : authors) { 

            System.out.println(aut.getText()); 

        

   

        // 获取西游记这个元素节点 所有元素的子节点。 

        List<Element> elements = e.elements(); 

   

        for (Element el : elements) { 

            System.out.println(el.getText()); 

        

   

    

   

}

Copier après la connexion
contrôle Bouton gauche de la souris


F3 Aller directement à la classe concernée

F2 Afficher les détails de la classe

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

package dom4j; 

   

import java.io.File; 

import java.io.FileOutputStream; 

import java.io.OutputStreamWriter; 

   

import org.dom4j.Document; 

import org.dom4j.DocumentHelper; 

import org.dom4j.Element; 

import org.dom4j.io.OutputFormat; 

import org.dom4j.io.SAXReader; 

import org.dom4j.io.XMLWriter; 

import org.junit.Test; 

   

public class Demo02 { 

   

    @Test 

    public void test() throws Exception { 

   

        // 创建saxreader对象 

        SAXReader reader = new SAXReader(); 

        // 读取一个文件,把这个文件转换成Document对象 

        Document document = reader.read(new File("src//c.xml")); 

        // 获取根元素 

        Element root = document.getRootElement(); 

        // 把文档转换字符串 

        String docXmlText = document.asXML(); 

        System.out.println(docXmlText); 

        System.out.println("---------------------------"); 

        // csdn元素标签根转换的内容 

        String rootXmlText = root.asXML(); 

        System.out.println(rootXmlText); 

        System.out.println("---------------------------"); 

        // 获取java元素标签 内的内容 

        Element e = root.element("java"); 

        System.out.println(e.asXML()); 

   

    

   

    /**

     * 创建一个document对象 往document对象中添加节点元素 转存为xml文件

     

     * @throws Exception

     */ 

    public void test2() throws Exception { 

   

        Document document = DocumentHelper.createDocument();// 创建根节点 

        Element root = document.addElement("csdn"); 

        Element java = root.addElement("java"); 

        java.setText("java班"); 

        Element ios = root.addElement("ios"); 

        ios.setText("ios班"); 

   

        writer(document); 

    

   

    /**

     * 把一个文本字符串转换Document对象

     

     * @throws Exception

     */ 

    public void test1() throws Exception { 

        String text = "<csdn><java>Java班</java><net>Net班</net></csdn>"

        Document document = DocumentHelper.parseText(text); 

        Element e = document.getRootElement(); 

        System.out.println(e.getName()); 

        writer(document); 

    

   

    /**

     * 把document对象写入新的文件

     

     * @param document

     * @throws Exception

     */ 

    public void writer(Document document) throws Exception { 

        // 紧凑的格式 

        // OutputFormat format = OutputFormat.createCompactFormat(); 

        // 排版缩进的格式 

        OutputFormat format = OutputFormat.createPrettyPrint(); 

        // 设置编码 

        format.setEncoding("UTF-8"); 

        // 创建XMLWriter对象,指定了写出文件及编码格式 

        // XMLWriter writer = new XMLWriter(new FileWriter(new 

        // File("src//a.xml")),format); 

        XMLWriter writer = new XMLWriter(new OutputStreamWriter( 

                new FileOutputStream(new File("src//c.xml")), "UTF-8"), format); 

        // 写入          writer.write(document); 

        // 立即写入          writer.flush(); 

        // 关闭操作          writer.close(); 

    

}

Copier après la connexion
contrôle o Afficher tous les

constructeurs de la classe actuelle

debug :

F5 Entrer la fonction de traitement F6 Étape suivante F8 Aller directement au point d'arrêt suivant

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 de ce site Web
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

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

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

PHP: un langage clé pour le développement Web PHP: un langage clé pour le développement Web Apr 13, 2025 am 12:08 AM

PHP est un langage de script largement utilisé du côté du serveur, particulièrement adapté au développement Web. 1.Php peut intégrer HTML, traiter les demandes et réponses HTTP et prend en charge une variété de bases de données. 2.PHP est utilisé pour générer du contenu Web dynamique, des données de formulaire de traitement, des bases de données d'accès, etc., avec un support communautaire solide et des ressources open source. 3. PHP est une langue interprétée, et le processus d'exécution comprend l'analyse lexicale, l'analyse grammaticale, la compilation et l'exécution. 4.PHP peut être combiné avec MySQL pour les applications avancées telles que les systèmes d'enregistrement des utilisateurs. 5. Lors du débogage de PHP, vous pouvez utiliser des fonctions telles que error_reportting () et var_dump (). 6. Optimiser le code PHP pour utiliser les mécanismes de mise en cache, optimiser les requêtes de base de données et utiliser des fonctions intégrées. 7

PHP vs Python: comprendre les différences PHP vs Python: comprendre les différences Apr 11, 2025 am 12:15 AM

PHP et Python ont chacun leurs propres avantages, et le choix doit être basé sur les exigences du projet. 1.Php convient au développement Web, avec une syntaxe simple et une efficacité d'exécution élevée. 2. Python convient à la science des données et à l'apprentissage automatique, avec une syntaxe concise et des bibliothèques riches.

Programme Java pour trouver le volume de la capsule Programme Java pour trouver le volume de la capsule Feb 07, 2025 am 11:37 AM

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

PHP vs Python: fonctionnalités et fonctionnalités de base PHP vs Python: fonctionnalités et fonctionnalités de base Apr 13, 2025 am 12:16 AM

PHP et Python ont chacun leurs propres avantages et conviennent à différents scénarios. 1.PHP convient au développement Web et fournit des serveurs Web intégrés et des bibliothèques de fonctions riches. 2. Python convient à la science des données et à l'apprentissage automatique, avec une syntaxe concise et une bibliothèque standard puissante. Lors du choix, il doit être décidé en fonction des exigences du projet.

PHP vs autres langues: une comparaison PHP vs autres langues: une comparaison Apr 13, 2025 am 12:19 AM

PHP convient au développement Web, en particulier dans le développement rapide et le traitement du contenu dynamique, mais n'est pas bon dans les applications de la science des données et de l'entreprise. Par rapport à Python, PHP présente plus d'avantages dans le développement Web, mais n'est pas aussi bon que Python dans le domaine de la science des données; Par rapport à Java, PHP fonctionne moins bien dans les applications au niveau de l'entreprise, mais est plus flexible dans le développement Web; Par rapport à JavaScript, PHP est plus concis dans le développement back-end, mais n'est pas aussi bon que JavaScript dans le développement frontal.

Créer l'avenir : programmation Java pour les débutants absolus Créer l'avenir : programmation Java pour les débutants absolus Oct 13, 2024 pm 01:32 PM

Java est un langage de programmation populaire qui peut être appris aussi bien par les développeurs débutants que par les développeurs expérimentés. Ce didacticiel commence par les concepts de base et progresse vers des sujets avancés. Après avoir installé le kit de développement Java, vous pouvez vous entraîner à la programmation en créant un simple programme « Hello, World ! ». Une fois que vous avez compris le code, utilisez l'invite de commande pour compiler et exécuter le programme, et « Hello, World ! » s'affichera sur la console. L'apprentissage de Java commence votre parcours de programmation et, à mesure que votre maîtrise s'approfondit, vous pouvez créer des applications plus complexes.

See all articles