Table des matières
XMLProgrammation-DOM4J" >XMLProgrammation-DOM4J
Basique Présentation
Analyser le texte XML sous la forme de , pour obtenir documentObjet" >2.Analyser le texte XML sous la forme de , pour obtenir documentObjet
Créer activement un documentObjet" >3.Créer activement un documentObjet
Objet nœud
, récupère le nœud racine du document " >1, récupère le nœud racine du document
, récupère le nœud enfant d'un nœud " >2, récupère le nœud enfant d'un nœud
, récupère le contenu du nœud" >3, récupère le contenu du nœud
, obtenir le contenu d'un nœud Tous les nœuds enfants nommés "membre", et parcourir " >4, obtenir le contenu d'un nœud Tous les nœuds enfants nommés "membre", et parcourir
, pour tous les nœuds enfants sous un nœud Traverse " >5, pour tous les nœuds enfants sous un nœud Traverse
, ajouter des sous-nœuds sous un nœud " >6, ajouter des sous-nœuds sous un nœud
, définir le texte du nœud " >7, définir le texte du nœud
, supprimer un nœud " >8, supprimer un nœud
, ajouter un nœud CDATA " >9, ajouter un nœud CDATA
Attribut d'objet nœud
, obtenez un attribut sous un nœud" >1, obtenez un attribut sous un nœud
, récupère le texte de l'attribut" >2, récupère le texte de l'attribut
, supprime un attribut" >3, supprime un attribut
, Parcourez tous les attributs d'un nœud " >4 , Parcourez tous les attributs d'un nœud
, définissez les attributs et le texte d'un nœud " >5, définissez les attributs et le texte d'un nœud
, définissez les attributs Texte " >6, définissez les attributs Texte
Insérer un nœud à la position spécifiée
XML" >Écrire le document dans un fichier XML
" >, si le document est en anglais
、如果文档含有中文" >2、如果文档含有中文
综合案例

Programmation XML-DOM4J

Feb 20, 2017 pm 03:13 PM

XMLProgrammation-DOM4J

Basique Présentation


dom4j est uneJavaAPI XML, similaire à jdom, utilisé pour lire et écrire des fichiers XML. dom4j est une très excellente API JavaXML, qui présente les caractéristiques d'excellentes performances, de fonctions puissantes et extrêmement facile à utiliser. également un logiciel Open source, vous pouvez le trouver sur SourceForge. Vous pouvez également trouver un article sur IBM DeveloperWorks sur les performances, les fonctionnalités et la facilité d'utilisation des critiques grand public Java XML API, vous pouvez donc savoir que dom4j est excellent dans tous les aspects. Aujourd'hui, nous pouvons constater que de plus en plus de logiciels Java utilisent dom4j pour lire et écrire du XML, il convient particulièrement de mentionner que même Sun JAXM utilise également dom4j . Il s'agit déjà d'un package jar incontournable, qui est également utilisé par Hibernate pour lire et écrire des fichiers de configuration.

PS

 : DOM4J L'une des raisons pour lesquelles il est si puissant est qu'il prend en charge XPath Technologie, DOM4J dispose également de documents de référence correspondants, vous pouvez les rechercher et les télécharger si vous en avez besoin.

Pourquoi y a-t-il

DOM4J

 ? Les deux technologies décrites dans le blog précédent, la technologie

DOM

et SAX, l'inconvénient de la première est qu'il prend du temps en mémoire, l'inconvénient de ce dernier est qu'il ne peut effectuer que des opérations de lecture, tandis que DOM4J peut à la fois soumettre l'efficacité et effectuer du crudopérations .

PS

 : Pour utiliser DOM4J vous devez importer le JAR package, Si vous utilisez la fonction d'extension de DOM4J, vous devez également importer l'extension JAR package.

DOM4JPrise en main

DOM4JTrois méthodes pour obtenir l'objet Document

1.Lire le XML fichier, obtenir le documentobjet(Couramment utilisé)

    SAXReader reader = new SAXReader();
    Document   document = reader.read(new File(“src/input.xml"));
Copier après la connexion

2.Analyser le texte XML sous la forme de , pour obtenir documentObjet

    String text = "<members></members>";
    Document document = DocumentHelper.parseText(text);
Copier après la connexion

3.Créer activement un documentObjet

    Document document = DocumentHelper.createDocument();
    //创建根节点
    Element root = document.addElement("members");
Copier après la connexion

PS : Assurez-vous d'importer le package JAR correspondant.



Objet nœud

1, récupère le nœud racine du document

    Element root = document.getRootElement();
Copier après la connexion



2, récupère le nœud enfant d'un nœud



    Element element=node.element(“书名");
Copier après la connexion

3, récupère le contenu du nœud

    String text1=node.getText();
    String text2=node.getTextTrim();	// 去掉内容前面和后面的空格
Copier après la connexion

4, obtenir le contenu d'un nœud Tous les nœuds enfants nommés "membre", et parcourir

    List nodes = rootElm.elements("member");
    for (Iterator it = nodes.iterator(); it.hasNext();) {
          Element elm = (Element) it.next();
          // do something
    }
Copier après la connexion

5, pour tous les nœuds enfants sous un nœud Traverse

    for(Iterator it=root.elementIterator();it.hasNext();){
        Element element = (Element) it.next();
           // do something
      }
Copier après la connexion

6, ajouter des sous-nœuds sous un nœud

    Element ageElm = newMemberElm.addElement("age");
Copier après la connexion

7, définir le texte du nœud

    element.setText("29");
Copier après la connexion

8, supprimer un nœud

    //childElm是待删除的节点,parentElm是其父节点
    parentElm.remove(childElm);
Copier après la connexion

9, ajouter un nœud CDATA

    Element contentElm = infoElm.addElement("content");
    contentElm.addCDATA(diary.getContent());
Copier après la connexion


PS : Notez que les nœuds ne sont pas accessibles à travers les couches.


Attribut d'objet nœud

1, obtenez un attribut sous un nœud

    Element root=document.getRootElement();    
      //属性名name
    Attribute attribute=root.attribute("size");
Copier après la connexion

2, récupère le texte de l'attribut

     String text=attribute.getText();
Copier après la connexion

3, supprime un attribut

    Attribute attribute=root.attribute("size");
    root.remove(attribute);
Copier après la connexion

4 , Parcourez tous les attributs d'un nœud

     Element root=document.getRootElement();    
    for(Iterator it=root.attributeIterator();it.hasNext();){
           Attribute attribute = (Attribute) it.next();
           String text=attribute.getText();
            System.out.println(text);
     }
Copier après la connexion

5, définissez les attributs et le texte d'un nœud

    newMemberElm.addAttribute("name", "sitinspring");
Copier après la connexion

6, définissez les attributs Texte

    Attribute attribute=root.attribute("name");
     attribute.setText("sitinspring");
Copier après la connexion


Insérer un nœud à la position spécifiée

1.Obtenir la liste des nœuds à la position d'insertion (list)

2. appelle list.add(index,elemnent), par index détermine la position d'insertion de l'élément. L'élément

Element peut être obtenu via l'objet DocumentHelper. Exemple de code :

    Element aaa = DocumentHelper.createElement("aaa");
    aaa.setText("aaa");
    List list = root.element("书").elements();
    list.add(1, aaa);
    //更新document
Copier après la connexion


Écrire le document dans un fichier XML

<🎜 >

1

, si le document est en anglais


XMLWriter writer = new XMLWriter(new  FileWriter("output.xml"));
writer.write(document);
writer.close();
Copier après la connexion

2、如果文档含有中文

OutputFormat outputFormat = OutputFormat.createPrettyPrint();
outputFormat.setEncoding("utf-8");

XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/com/pc/XML8.xml"), outputFormat);
xmlWriter.write(document);
xmlWriter.close();
Copier après la connexion

PS:出现乱码的原因是因为输出字符集不能识别中文,这样可以通过OutputFormatsetEncoding方法设置为UTF-8,然后再使用XMLWriter这种形参的(OutputStream out, OutputFormat format) 构造方构造方法,就能解决乱码问题了,至于为什么会用createPrettyPrint方法,是因为这样做输出的格式更符合人的阅读习惯。


综合案例

XML8.xml

<?xml version="1.0" encoding="utf-8"?>
<班级 班次="1班" 编号="C1">
	<学生 学号="n1" 性别="男" 授课方式="面授" 朋友="n2" 班级编号="C1">
		<名字>张三</名字>
		<年龄>20</年龄>
		<介绍>不错</介绍>
	</学生>
	<学生 学号="n2" 性别="女" 授课方式="面授" 朋友="n1 n3" 班级编号="C1">
		<名字>李四</名字>
		<年龄>18</年龄>
		<介绍>很好</介绍>
	</学生>
	<学生 学号="n3" 性别="男" 授课方式="面授" 朋友="n2" 班级编号="C1">
		<名字>王五</名字>
		<年龄>22</年龄>
		<介绍>非常好</介绍>
	</学生>
	<学生 性别="男" 班级编号="C1">
		<名字>小明</名字>
		<年龄>30</年龄>
		<介绍>好</介绍>
	</学生>
</班级>
Copier après la connexion


package com.pc;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/**
 * 
 * @author Switch
 * @function 使用DOM4j解析XML文件
 * 
 */
public class XML8 {
	// 使用DOM4j对XML进行CRUD操作
	public static void main(String[] args) throws Exception {
		// 1.得到解析器
		SAXReader saxReader = new SAXReader();
		// 2.指定解析哪个XML文件
		Document document = saxReader.read(new File("src/com/pc/XML8.xml"));
		// list(document.getRootElement());
		// read(document);
		// readByXPath(document);
		// add(document);
		// delete(document);
		// updateElement(document);
		// updateAttribute(document);
		// addByIndex(document, 3);
	}

	// 更新属性(修改所有班级编号为C2)
	public static void updateAttribute(Document document) throws Exception {
		// 得到所有学生
		List<Element> students = document.getRootElement().elements("学生");
		for (Element e : students) {
			// 修改班级编号
			e.addAttribute("班级编号", "C2");
		}
		updateToXML(document);
	}

	// 更新元素(将所有学生的年龄+3)
	public static void updateElement(Document document) throws Exception {
		// 得到所有学生
		List<Element> students = document.getRootElement().elements("学生");
		for (Element e : students) {
			// 取出年龄
			Element age = e.element("年龄");
			age.setText(Integer.parseInt(age.getTextTrim()) + 3 + "");
		}
		updateToXML(document);
	}

	// 删除元素(删除第一个学生)
	public static void delete(Document document) throws Exception {
		// 找到元素
		Element stu = document.getRootElement().element("学生");
		// 删除
		stu.getParent().remove(stu);

		// 更新
		updateToXML(document);
	}

	// 添加元素到指定位置
	public static void addByIndex(Document document, int index)
			throws Exception {
		// 创建一个元素
		Element newStu = DocumentHelper.createElement("学生");
		newStu.setText("小花");
		// 得到所有学生的list
		List<Element> students = document.getRootElement().elements("学生");
		// 按索引添加
		students.add(index, newStu);

		// 更新
		updateToXML(document);
	}

	// 添加元素(添加一个学生到xml中)
	public static void add(Document document) throws Exception {
		// 创建一个学生节点对象

		Element newStu = DocumentHelper.createElement("学生");
		// 给元素添加属性
		newStu.addAttribute("学号", "n4");
		Element newStuName = DocumentHelper.createElement("名字");
		Element newStuAge = DocumentHelper.createElement("年龄");
		Element newStuIntro = DocumentHelper.createElement("介绍");

		// 把子元素挂载到学生节点下
		newStu.add(newStuName);
		newStu.add(newStuAge);
		newStu.add(newStuIntro);
		// 将学生挂载在根节点下
		document.getRootElement().add(newStu);

		// 更新
		updateToXML(document);
	}

	private static void updateToXML(Document document)
			throws UnsupportedEncodingException, FileNotFoundException,
			IOException {
		// 更新xml文件
		// 直接输出会出现中文乱码
		OutputFormat outputFormat = OutputFormat.createPrettyPrint();
		outputFormat.setEncoding("utf-8");

		XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(
				"src/com/pc/XML8.xml"), outputFormat);
		xmlWriter.write(document);
		xmlWriter.close();
	}

	// xpath技术,跨层读取某个元素
	public static void readByXPath(Document document) throws Exception {
		// 取出第一个学生
		Element student = (Element) document.selectSingleNode("/班级/学生[1]");
		System.out.println("姓名:" + student.elementText("名字") + "\t年龄:"
				+ student.elementText("年龄") + "\t介绍:"
				+ student.elementText("介绍") + "\t性别:"
				+ student.attributeValue("性别"));
	}

	// 读取指定的某个元素(读取第一个学生的信息)
	public static void read(Document document) throws Exception {
		// 得到根元素
		Element root = document.getRootElement();
		// root.elements("学生"); 取出root元素下的所有学生元素
		// root.element("学生"); 取出root元素下的第一个学生元素
		// 取出root元素下的第一个学生元素
		Element student = (Element) root.elements("学生").get(0);
		System.out.println("姓名:" + student.elementText("名字") + "\t年龄:"
				+ student.elementText("年龄") + "\t介绍:"
				+ student.elementText("介绍") + "\t性别:"
				+ student.attributeValue("性别"));
	}

	// 遍历xml文件
	public static void list(Element element) {
		System.out.println("元素名称:" + element.getName() + "\t元素内容:"
				+ element.getTextTrim());

		Iterator<Element> iterator = element.elementIterator();

		while (iterator.hasNext()) {
			Element e = iterator.next();
			// 递归
			list(e);
		}
	}
}
Copier après la connexion

 以上就是XML编程-DOM4J的内容,更多相关内容请关注PHP中文网(www.php.cn)!


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)

Puis-je ouvrir un fichier XML à l'aide de PowerPoint ? Puis-je ouvrir un fichier XML à l'aide de PowerPoint ? Feb 19, 2024 pm 09:06 PM

Les fichiers XML peuvent-ils être ouverts avec PPT ? XML, Extensible Markup Language (Extensible Markup Language), est un langage de balisage universel largement utilisé dans l'échange et le stockage de données. Comparé au HTML, XML est plus flexible et peut définir ses propres balises et structures de données, rendant le stockage et l'échange de données plus pratiques et unifiés. PPT, ou PowerPoint, est un logiciel développé par Microsoft pour créer des présentations. Il fournit un moyen complet de

Utiliser Python pour fusionner et dédupliquer des données XML Utiliser Python pour fusionner et dédupliquer des données XML Aug 07, 2023 am 11:33 AM

Utilisation de Python pour fusionner et dédupliquer des données XML XML (eXtensibleMarkupLanguage) est un langage de balisage utilisé pour stocker et transmettre des données. Lors du traitement de données XML, nous devons parfois fusionner plusieurs fichiers XML en un seul ou supprimer les données en double. Cet article explique comment utiliser Python pour implémenter la fusion et la déduplication de données XML, et donne des exemples de code correspondants. 1. Fusion de données XML Lorsque nous avons plusieurs fichiers XML, nous devons les fusionner

Convertir des données XML au format CSV en Python Convertir des données XML au format CSV en Python Aug 11, 2023 pm 07:41 PM

Convertir des données XML en Python au format CSV XML (ExtensibleMarkupLanguage) est un langage de balisage extensible couramment utilisé pour le stockage et la transmission de données. CSV (CommaSeparatedValues) est un format de fichier texte délimité par des virgules couramment utilisé pour l'importation et l'exportation de données. Lors du traitement des données, il est parfois nécessaire de convertir les données XML au format CSV pour faciliter l'analyse et le traitement. Python est un puissant

Filtrage et tri des données XML à l'aide de Python Filtrage et tri des données XML à l'aide de Python Aug 07, 2023 pm 04:17 PM

Implémentation du filtrage et du tri des données XML à l'aide de Python Introduction : XML est un format d'échange de données couramment utilisé qui stocke les données sous forme de balises et d'attributs. Lors du traitement de données XML, nous devons souvent filtrer et trier les données. Python fournit de nombreux outils et bibliothèques utiles pour traiter les données XML. Cet article explique comment utiliser Python pour filtrer et trier les données XML. Lecture du fichier XML Avant de commencer, nous devons lire le fichier XML. Python possède de nombreuses bibliothèques de traitement XML,

Importer des données XML dans une base de données à l'aide de PHP Importer des données XML dans une base de données à l'aide de PHP Aug 07, 2023 am 09:58 AM

Importation de données XML dans la base de données à l'aide de PHP Introduction : Pendant le développement, nous devons souvent importer des données externes dans la base de données pour un traitement et une analyse ultérieurs. En tant que format d'échange de données couramment utilisé, XML est souvent utilisé pour stocker et transmettre des données structurées. Cet article explique comment utiliser PHP pour importer des données XML dans une base de données. Étape 1 : analyser le fichier XML Tout d'abord, nous devons analyser le fichier XML et extraire les données requises. PHP propose plusieurs façons d'analyser XML, la plus couramment utilisée étant l'utilisation de Simple

Python implémente la conversion entre XML et JSON Python implémente la conversion entre XML et JSON Aug 07, 2023 pm 07:10 PM

Python implémente la conversion entre XML et JSON Introduction : Dans le processus de développement quotidien, nous devons souvent convertir des données entre différents formats. XML et JSON sont des formats d'échange de données courants. En Python, nous pouvons utiliser diverses bibliothèques pour réaliser une conversion mutuelle entre XML et JSON. Cet article présentera plusieurs méthodes couramment utilisées, avec des exemples de code. 1. Pour convertir XML en JSON en Python, nous pouvons utiliser le module xml.etree.ElementTree

Gestion des erreurs et des exceptions en XML à l'aide de Python Gestion des erreurs et des exceptions en XML à l'aide de Python Aug 08, 2023 pm 12:25 PM

Gestion des erreurs et des exceptions dans XML à l'aide de Python XML est un format de données couramment utilisé pour stocker et représenter des données structurées. Lorsque nous utilisons Python pour traiter XML, nous pouvons parfois rencontrer des erreurs et des exceptions. Dans cet article, je vais vous présenter comment utiliser Python pour gérer les erreurs et les exceptions dans XML, et fournir un exemple de code pour référence. Utilisez l'instruction try-sauf pour détecter les erreurs d'analyse XML Lorsque nous utilisons Python pour analyser XML, nous pouvons parfois rencontrer des

Python analyse les caractères spéciaux et les séquences d'échappement en XML Python analyse les caractères spéciaux et les séquences d'échappement en XML Aug 08, 2023 pm 12:46 PM

Python analyse les caractères spéciaux et les séquences d'échappement en XML XML (eXtensibleMarkupLanguage) est un format d'échange de données couramment utilisé pour transférer et stocker des données entre différents systèmes. Lors du traitement de fichiers XML, vous rencontrez souvent des situations contenant des caractères spéciaux et des séquences d'échappement, qui peuvent provoquer des erreurs d'analyse ou une mauvaise interprétation des données. Par conséquent, lors de l’analyse de fichiers XML à l’aide de Python, nous devons comprendre comment gérer ces caractères spéciaux et ces séquences d’échappement. 1. Caractères spéciaux et

See all articles