Avant-propos : L'APP de l'entreprise existe depuis longtemps. Les résultats de l'interface précédente étaient traités via XML, et dans le projet, tout le monde y traite le XML de différentes manières. Il existe toutes sortes de méthodes, et il n'y a pas de méthode de traitement unifiée, c'est donc très difficile à appliquer, par conséquent, chaque fois que l'affiche développe un projet, afin de gagner du temps, il n'étudie pas les méthodes d'analyse XML des autres. . Tant qu'il rencontre XML, il analysera en utilisant DOM4J.
Il existe de nombreuses façons d'analyser XML, comme DOM, SAX, JDOM, etc. Quant à l'utilisation et aux principes, je n'entrerai pas dans les détails ici (ps : l'affiche ne connaît pas l'utilisation et principes non plus). Cet article parle principalement du fonctionnement et de l'utilisation simples de DOM4J.
Introduction à DOM4J
dom4j est une API Java XML, une mise à niveau de jdom, utilisée pour lire et écrire des fichiers XML. dom4j est une très excellente API JavaXML avec d'excellentes performances, des fonctions puissantes et extrêmement simple à utiliser. Ses performances dépassent la technologie dom officielle de Sun Company. C'est également un logiciel open source et peut être trouvé sur SourceForge.
Dom4j est une bibliothèque open source facile à utiliser pour XML, XPath et XSLT. Il est appliqué à la plateforme Java, adopte le framework de collection Java et prend entièrement en charge DOM, SAX et JAXP.
Voici un exemple simple pour présenter l'utilisation de DOM4J.
Remarque : Pour utiliser DOM4J pour analyser XML, vous devez introduire le package jar DOM4J dans le projet
Fichier XML
<Response T='203' T1='6' TaskID='20130800001963' MediaNum='3' Result = '1' Desc='查询成功!' > <Media Name='IMG_20130425_141838.jpg' Mediasource ='1' Type ='1' Code='/9j/4AAQSkZJRgABAQA0'>图片1</Media> <Media Name='IMG_20130425_141838.jpg' Mediasource ='2' Type ='1' Code='/9j/4AAQSkZJRgABAQA0'>图片2</Media> <Media Name='IMG_20130425_141838.jpg' Mediasource ='3' Type ='1' Code='/9j/4AAQSkZJRgABAQA0'>图片3</Media> </Response>
Explication détaillée de l'utilisation de DOM4J
Étape 1 : Charger le fichier XML
Le chargement de XML peut être divisé en deux méthodes principales
1 Charger directement l'adresse du chemin du fichier
2. Charger . string form xml (cette méthode est principalement utilisée dans les résultats de retour du serveur)
1.1 Charger directement le chemin du fichier
SAXReader reader = new SAXReader(); Document document = null; try { document = reader.read(new File("E://CZBK//day01//caseUp.xml")); } catch (DocumentException e) { e.printStackTrace(); }
1.2 Charger xml sous forme de chaîne
<🎜. >SAXReader reader = new SAXReader(); Document document = null; try { //result是需要解析的字符串 //解析字符串需要转换成流的形式,可以指定转换字符编码 document = reader.read(new ByteArrayInputStream(result.getBytes("UTF-8"))); } catch (DocumentException e) { e.printStackTrace(); }
Étape 2 : Analyser XML
Qu'est-ce qu'un nœud ? Qu'est-ce qu'un élément ? Qu'est-ce que l'
attribut(attribut) ? Qu'est-ce qu'une valeur de texte ? Nœuds : "Réponse" et "Média" sont appelés nœuds.
Élément : Il se termine par une balise complète et est appelé un élément, contenant tout le contenu de l'élément. Par exemple :
Attribut : valeur d'attribut de le nœud, ajoutez une description au contenu du nœud. Par exemple : T='203' T1='6' TaskID='20130800001963' MediaNum='3' Result = '1' Desc='Requête réussie !'
Valeur du texte : "Image 1" est appelée Valeur du texte.
Dans le projet, il ne s'agit rien d'autre que d'opérer autour d'éléments, d'attributs et de valeurs de texte, donc si vous maîtrisez les méthodes de valeur de ces trois parties, vous maîtriserez également l'analyse XML.
2.1. Récupérer le nœud racine
rootElement contient le contenu de l'intégralité du document XML, c'est-à-dire tout le contenu contenu dans la balise Response//获取整个文档 Element rootElement = document.getRootElement();
2.2. Obtenez la valeur de l'attribut du nœud de réponse
2.3 Obtenez l'élément Media//获取Response节点的Result属性值 String responseResult = rootElement.attributeValue("Result");
//获取第一个Media元素 Element mediaElement = rootElement.element("Media"); //获取所有的Media元素 List allMeidaElements = rootElement.elements("Media");
//获取第一个Media元素的Name属性值 String mediaName = mediaElement.attributeValue("Name"); //遍历所有的Media元素的Name属性值 for (int i = 0; i < allMeidaElements.size(); i++) { Element element = (Element) allMeidaElements.get(i); String name = element.attributeValue("Name"); }
//获取第一个Meida元素的文本值 String value = mediaElement.getText();
import java.io.File; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class Textxml { public void xml() { SAXReader reader = new SAXReader(); Document document = null; try { document = reader.read(new File("E://CZBK//day01//caseUp.xml")); } catch (DocumentException e) { e.printStackTrace(); } //获取整个文档 Element rootElement = document.getRootElement(); System.out.println("整个文档:"+rootElement.asXML()); //获取Response节点的Result属性值 String responseResult = rootElement.attributeValue("Result"); System.out.println("Response节点的Result属性值:"+responseResult); //获取第一个Media元素 Element mediaElement = rootElement.element("Media"); System.out.println("第一个Media元素:"+mediaElement.asXML()); //获取所有的Media元素 List allMeidaElements = rootElement.elements("Media"); //获取第一个Media元素的Name属性值 String mediaName = mediaElement.attributeValue("Name"); System.out.println("第一个Media元素的Name属性值:"+mediaName); //遍历所有的Media元素的Name属性值 for (int i = 0; i < allMeidaElements.size(); i++) { Element element = (Element) allMeidaElements.get(i); String name = element.attributeValue("Name"); } //获取第一个Meida元素的文本值 String value = mediaElement.getText(); System.out.println("第一个Meida元素的文本值:"+value); } public static void main(String[] args) { Textxml textxml = new Textxml(); textxml.xml(); } }
Postscript
整个文档:<Response T="203" T1="6" TaskID="20130800001963" MediaNum="3" Result="1" Desc="查询成功!"> <Media Name="IMG_20130425_141838.jpg" Mediasource="1" Type="1" Code="/9j/4AAQSkZJRgABAQA0">图片1</Media> <Media Name="IMG_20130425_141838.jpg" Mediasource="2" Type="1" Code="/9j/4AAQSkZJRgABAQA0">图片2</Media> <Media Name="IMG_20130425_141838.jpg" Mediasource="3" Type="1" Code="/9j/4AAQSkZJRgABAQA0">图片3</Media> </Response> Response节点的Result属性值:1 第一个Media元素:<Media Name="IMG_20130425_141838.jpg" Mediasource="1" Type="1" Code="/9j/4AAQSkZJRgABAQA0">图片1</Media> 第一个Media元素的Name属性值:IMG_20130425_141838.jpg 第一个Meida元素的文本值:图片1
1. Analyse XML Il existe de nombreuses méthodes, et il n'est pas nécessaire de maîtriser chacune d'elles. Il suffit de clarifier une des analyses. Quant à la différence de performances, le corps principal du bâtiment. ne sera pas en mesure de le dire, ni de répondre à cette question 2. DOM4J Il existe de nombreuses API Cet article ne présente que les plus basiques et les plus couramment utilisées. Si vous êtes intéressé, vous pouvez les étudier et les utiliser. par vous-même
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!