Programmation XML-DOM4J
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
DOMet 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"));
2.Analyser le texte XML sous la forme de , pour obtenir documentObjet
String text = "<members></members>"; Document document = DocumentHelper.parseText(text);
3.Créer activement un documentObjet
Document document = DocumentHelper.createDocument(); //创建根节点 Element root = document.addElement("members");
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();
2, récupère le nœud enfant d'un nœud
Element element=node.element(“书名");
3, récupère le contenu du nœud
String text1=node.getText(); String text2=node.getTextTrim(); // 去掉内容前面和后面的空格
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 }
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 }
6, ajouter des sous-nœuds sous un nœud
Element ageElm = newMemberElm.addElement("age");
7, définir le texte du nœud
element.setText("29");
8, supprimer un nœud
//childElm是待删除的节点,parentElm是其父节点 parentElm.remove(childElm);
9, ajouter un nœud CDATA
Element contentElm = infoElm.addElement("content"); contentElm.addCDATA(diary.getContent());
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");
2, récupère le texte de l'attribut
String text=attribute.getText();
3, supprime un attribut
Attribute attribute=root.attribute("size"); root.remove(attribute);
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); }
5, définissez les attributs et le texte d'un nœud
newMemberElm.addAttribute("name", "sitinspring");
6, définissez les attributs Texte
Attribute attribute=root.attribute("name"); attribute.setText("sitinspring");
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
Écrire le document dans un fichier XML
<🎜 >
, si le document est en anglais
XMLWriter writer = new XMLWriter(new FileWriter("output.xml")); writer.write(document); writer.close();
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();
PS:出现乱码的原因是因为输出字符集不能识别中文,这样可以通过OutputFormat的setEncoding方法设置为”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</年龄> <介绍>好</介绍> </学生> </班级>
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); } } }
以上就是XML编程-DOM4J的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Outils d'IA chauds

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.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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 !

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)

Sujets chauds

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

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 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

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,

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 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 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 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
