Maison développement back-end Tutoriel XML/RSS Exemple de code Java pour générer et analyser des fichiers et des chaînes au format XML

Exemple de code Java pour générer et analyser des fichiers et des chaînes au format XML

Jan 11, 2017 pm 12:39 PM

1. Connaissances de base :
Il existe généralement quatre méthodes permettant à Java d'analyser XML : DOM, SAX, JDOM et DOM4J.

2. Introduction à l'utilisation
1), Introduction au DOM
(1)

L'interface fournie par le W3C (org.w3c.dom), qui lit l'intégralité du XML document Memory, construisez une arborescence DOM pour faire fonctionner chaque nœud (Node). L'avantage est que le document entier est toujours en mémoire, nous pouvons accéder à n'importe quel nœud à tout moment, et la traversée d'arbre est également une opération relativement familière ; l'inconvénient est qu'elle consomme de la mémoire, et nous devons attendre que tous les documents soient lus en mémoire. avant le traitement.

(2) Exemple de code :

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root>
    <TelePhone>
        <type name="nokia">
            <price>599</price>
            <operator>CMCC</operator>
        </type>
        <type name="xiaomi">
            <price>699</price>
            <operator>ChinaNet</operator>
        </type>
    </TelePhone>
</root>
Copier après la connexion
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
public class XMLHandler {
    public XMLHandler(){
        
    }
    
    public String createXML(){
        String xmlStr = null;
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.newDocument();
            document.setXmlVersion("1.0");
            
            Element root = document.createElement("root");
            document.appendChild(root);
            
            Element telephone = document.createElement("TelePhone");
            
            Element nokia = document.createElement("type");
            nokia.setAttribute("name", "nokia");
            
            Element priceNokia = document.createElement("price");
            priceNokia.setTextContent("599");
            nokia.appendChild(priceNokia);
            
            Element operatorNokia = document.createElement("operator");
            operatorNokia.setTextContent("CMCC");
            nokia.appendChild(operatorNokia);
            
            telephone.appendChild(nokia);
            
            Element xiaomi = document.createElement("type");
            xiaomi.setAttribute("name", "xiaomi");
            
            Element priceXiaoMi = document.createElement("price");
            priceXiaoMi.setTextContent("699");
            xiaomi.appendChild(priceXiaoMi);
            
            Element operatorXiaoMi = document.createElement("operator");
            operatorXiaoMi.setTextContent("ChinaNet");
            xiaomi.appendChild(operatorXiaoMi);
            
            telephone.appendChild(xiaomi);
            
            root.appendChild(telephone);
            
            TransformerFactory transFactory = TransformerFactory.newInstance();
            Transformer transFormer = transFactory.newTransformer();
            DOMSource domSource = new DOMSource(document);
            
            //export string
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            transFormer.transform(domSource, new StreamResult(bos));
            xmlStr = bos.toString();
            
            //-------
            //save as file
            File file = new File("TelePhone.xml");
            if(!file.exists()){
                file.createNewFile();
            }
            FileOutputStream out = new FileOutputStream(file);
            StreamResult xmlResult = new StreamResult(out);
            transFormer.transform(domSource, xmlResult);
            //--------
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch (TransformerConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch (TransformerException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        return xmlStr;
    }
    
    public void parserXML(String strXML){
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder builder = factory.newDocumentBuilder();
            StringReader sr = new StringReader(strXML);
            InputSource is = new InputSource(sr);
            Document doc = builder.parse(is);
            Element rootElement = doc.getDocumentElement();
            NodeList phones = rootElement.getElementsByTagName("type");
            for (int i = 0; i < phones.getLength(); i++) {
                Node type = phones.item(i);
                String phoneName = ((Element)type).getAttribute("name");
                System.out.println("Phone name = "+phoneName);
                NodeList properties = type.getChildNodes();
                for (int j = 0; j < properties.getLength(); j++) {
                    Node property = properties.item(j);
                    String nodeName = property.getNodeName();
                    if (nodeName.equals("price")) {
                        String price=property.getFirstChild().getNodeValue();
                        System.out.println("price="+price);
                    } else if (nodeName.equals("operator")) {
                        String operator=property.getFirstChild().getNodeValue();
                        System.out.println("operator="+operator);
                    }
                }
            }
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    public static void main(String[] args) {
        XMLHandler handler = new XMLHandler();
        String xml = handler.createXML();
        System.out.println(xml);
        handler.parserXML(xml);
    }
}
Copier après la connexion

(3) La différence entre l'élément (Element) et le nœud (Node) (org.w3c.dom)
Node L'objet est le type de données principal de l'ensemble du modèle objet du document. Il s'agit de l'objet le plus basique du DOM et représente le nœud abstrait dans l'arborescence du document. Cependant, en utilisation réelle, l'objet Node est rarement utilisé directement. Au lieu de cela, les sous-objets Element, Attr, Text, etc. de l'objet Node sont utilisés.
L'objet Element représente un élément dans un document HTML ou XML et est le sous-objet principal de la classe Node. L'élément peut contenir des attributs, Element dispose donc de méthodes pour accéder à ses attributs.
L'élément est hérité de Node. L'élément est une définition de petite portée. Il doit s'agir d'un nœud contenant des informations complètes pour être un élément, tel que

...
. Mais un nœud n’est pas nécessairement un élément, et un élément doit être un nœud.
le nœud a plusieurs sous-types : Element, Text, Attribute, RootElement, Comment, Namespace, etc.

2), SAX


3), JDOM

4), DOM4J
(1) Introduction
dom4j est actuellement le meilleur en matière d'analyse XML (Hibernate et JAXM de Sun utilisent également dom4j pour analyser XML. Il intègre de nombreuses fonctionnalités au-delà de la représentation de base des documents XML. Les fonctionnalités incluent des fonctionnalités intégrées. Prise en charge de XPath, prise en charge du schéma XML et traitement basé sur les événements pour les documents volumineux ou diffusés en continu.
Lors de l'utilisation de XPATH, ajoutez jaxen.jar, sinon l'erreur suivante se produira :

Exception in thread "main" java.lang.NoClassDefFoundError: org/jaxen/JaxenException
at org.dom4j.DocumentFactory.createXPath(DocumentFactory.java:230)
at org.dom4j.tree.AbstractNode.createXPath(AbstractNode.java:207)      
at org.dom4j.tree.AbstractNode.selectNodes(AbstractNode.java:164)
Copier après la connexion

(2) Exemple de code :

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
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;
import org.xml.sax.InputSource;
public class XMLHandler {
    public XMLHandler() {
        // TODO Auto-generated constructor stub
    }
    
    public String createXML(){
        String strXML = null;
        Document document = DocumentHelper.createDocument();
        Element root = document.addElement("root");
        
        Element phone = root.addElement("TelePhone");
        
        Element nokia = phone.addElement("type");
        nokia.addAttribute("name", "nokia");
        Element price_nokia = nokia.addElement("price");
        price_nokia.addText("599");
        Element operator_nokia = nokia.addElement("operator");
        operator_nokia.addText("CMCC");
        
        Element xiaomi = phone.addElement("type");
        xiaomi.addAttribute("name", "xiaomi");
        Element price_xiaomi = xiaomi.addElement("price");
        price_xiaomi.addText("699");
        Element operator_xiaomi = xiaomi.addElement("operator");
        operator_xiaomi.addText("ChinaNet");
        
        //--------
        StringWriter strWtr = new StringWriter();
        OutputFormat format = OutputFormat.createPrettyPrint();
        format.setEncoding("UTF-8");
        XMLWriter xmlWriter =new XMLWriter(strWtr, format);
        try {
            xmlWriter.write(document);
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        strXML = strWtr.toString();
        //--------
        
        //-------
        //strXML=document.asXML();
        //------
        
        //-------------
        File file = new File("TelePhone.xml");  
        if (file.exists()) {  
            file.delete();  
        }  
        try {
            file.createNewFile();
            XMLWriter out = new XMLWriter(new FileWriter(file));  
            out.write(document);  
            out.flush();  
            out.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //--------------
        
        return strXML;
    }
    
    public void parserXML(String strXML){
        SAXReader reader = new SAXReader();
        StringReader sr = new StringReader(strXML);
        InputSource is = new InputSource(sr);
        try {
            Document document = reader.read(is);
            
            Element root = document.getRootElement();
            
            //get element
            List<Element> phoneList = root.elements("TelePhone");
            List<Element> typeList = phoneList.get(0).elements("type");
            for (int i=0;i<typeList.size();i++){
                Element element = typeList.get(i);
                String phoneName = element.attributeValue("name");
                System.out.println("phonename = "+phoneName);
                //get all element
                List<Element> childList = element.elements();
                for (int j=0;j<childList.size();j++){
                    Element e = childList.get(j);
                    System.out.println(e.getName()+"="+e.getText());
                }
            }
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    public void parserXMLbyXPath(String strXML){
        SAXReader reader = new SAXReader();
        StringReader sr = new StringReader(strXML);
        InputSource is = new InputSource(sr);
        try {
            Document document = reader.read(is);
            List list = document.selectNodes("/root/TelePhone/type");
            for(int i=0;i<list.size();i++){
                Element e = (Element) list.get(i);
                System.out.println("phonename="+e.attributeValue("name"));
                List list1 = e.selectNodes("./*");
                for(int j=0;j<list1.size();j++){
                    Element e1 = (Element) list1.get(j);
                    System.out.println(e1.getName()+"="+e1.getText());
                }
            }
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        XMLHandler handler = new XMLHandler();
        String strXML=handler.createXML();
        System.out.println(strXML);
        handler.parserXML(strXML);
        System.out.println("-----------");
        handler.parserXMLbyXPath(strXML);
    }
}
Copier après la connexion

5)XPATH
( 1) Introduction
XPath est un langage permettant de rechercher des informations dans des documents XML. XPath est utilisé pour naviguer dans les éléments et les attributs des documents XML.
Référence pour une introduction à la syntaxe spécifique : http://w3school.com.cn/xpath/index.asp

(2) Exemple de code :

import java.io.IOException;
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
public class XMLHandler {
    public XMLHandler() {
        // TODO Auto-generated constructor stub
    }
    
    public void parserXML(String strXML){
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder builder = factory.newDocumentBuilder();
            StringReader sr = new StringReader(strXML);
            InputSource is = new InputSource(sr);
            Document doc = builder.parse(is);
            
            XPathFactory xFactory = XPathFactory.newInstance();
            XPath xpath = xFactory.newXPath();
            XPathExpression expr = xpath.compile("/root/TelePhone/type");
            NodeList phones = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);  
            for (int i = 0; i < phones.getLength(); i++) {
                Node type = phones.item(i);
                String phoneName = ((Element)type).getAttribute("name");
                System.out.println("Phone name = "+phoneName);
                XPathExpression expr1 = xpath.compile("./*");
                NodeList list = (NodeList) expr1.evaluate(type, XPathConstants.NODESET);
                for(int j =0;j<list.getLength();j++){
                    Element e1 = (Element) list.item(j);
                    System.out.println(e1.getNodeName()+"="+e1.getTextContent());
                }
                
            }
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch (XPathExpressionException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String strXML="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>"+
                    "<root>"+
                        "<TelePhone>"+
                            "<type name=\"nokia\">"+
                                "<price>599</price>"+
                                "<operator>CMCC</operator>"+
                            "</type>"+
                            "<type name=\"xiaomi\">"+
                                "<price>699</price>"+
                                "<operator>ChinaNet</operator>"+
                            "</type>"+
                        "</TelePhone>"+
                    "</root>";
        XMLHandler handler = new XMLHandler();
        handler.parserXML(strXML);
    }
}
Copier après la connexion

Plus de génération et d'analyse Java Pour les articles liés à des exemples de codes de fichiers et de chaînes au format XML, veuillez faire attention au site Web PHP 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

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

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)

La vitesse de conversion est-elle rapide lors de la conversion du XML en PDF sur le téléphone mobile? La vitesse de conversion est-elle rapide lors de la conversion du XML en PDF sur le téléphone mobile? Apr 02, 2025 pm 10:09 PM

La vitesse du XML mobile à PDF dépend des facteurs suivants: la complexité de la structure XML. Méthode de conversion de configuration du matériel mobile (bibliothèque, algorithme) Méthodes d'optimisation de la qualité du code (sélectionnez des bibliothèques efficaces, optimiser les algorithmes, les données de cache et utiliser le multi-threading). Dans l'ensemble, il n'y a pas de réponse absolue et elle doit être optimisée en fonction de la situation spécifique.

Comment convertir les fichiers XML en PDF sur votre téléphone? Comment convertir les fichiers XML en PDF sur votre téléphone? Apr 02, 2025 pm 10:12 PM

Il est impossible de terminer la conversion XML à PDF directement sur votre téléphone avec une seule application. Il est nécessaire d'utiliser les services cloud, qui peuvent être réalisés via deux étapes: 1. Convertir XML en PDF dans le cloud, 2. Accédez ou téléchargez le fichier PDF converti sur le téléphone mobile.

Comment convertir XML en PDF sur votre téléphone? Comment convertir XML en PDF sur votre téléphone? Apr 02, 2025 pm 10:18 PM

Il n'est pas facile de convertir XML en PDF directement sur votre téléphone, mais il peut être réalisé à l'aide des services cloud. Il est recommandé d'utiliser une application mobile légère pour télécharger des fichiers XML et recevoir des PDF générés, et de les convertir avec des API Cloud. Les API Cloud utilisent des services informatiques sans serveur et le choix de la bonne plate-forme est crucial. La complexité, la gestion des erreurs, la sécurité et les stratégies d'optimisation doivent être prises en compte lors de la gestion de l'analyse XML et de la génération de PDF. L'ensemble du processus nécessite que l'application frontale et l'API back-end fonctionnent ensemble, et il nécessite une certaine compréhension d'une variété de technologies.

Comment ouvrir web.xml Comment ouvrir web.xml Apr 03, 2025 am 06:51 AM

Pour ouvrir un fichier web.xml, vous pouvez utiliser les méthodes suivantes: Utilisez un éditeur de texte (tel que le bloc-notes ou TextEdit) pour modifier les commandes à l'aide d'un environnement de développement intégré (tel qu'Eclipse ou NetBeans) (Windows: Notepad web.xml; Mac / Linux: Open -A TextEdit web.xml)

Outil de mise en forme XML recommandé Outil de mise en forme XML recommandé Apr 02, 2025 pm 09:03 PM

Les outils de mise en forme XML peuvent taper le code en fonction des règles pour améliorer la lisibilité et la compréhension. Lors de la sélection d'un outil, faites attention aux capacités de personnalisation, en gérant des circonstances spéciales, des performances et de la facilité d'utilisation. Les types d'outils couramment utilisés incluent des outils en ligne, des plug-ins IDE et des outils de ligne de commande.

Y a-t-il une application mobile qui peut convertir XML en PDF? Y a-t-il une application mobile qui peut convertir XML en PDF? Apr 02, 2025 pm 08:54 PM

Une application qui convertit le XML directement en PDF ne peut être trouvée car ce sont deux formats fondamentalement différents. XML est utilisé pour stocker des données, tandis que PDF est utilisé pour afficher des documents. Pour terminer la transformation, vous pouvez utiliser des langages de programmation et des bibliothèques telles que Python et ReportLab pour analyser les données XML et générer des documents PDF.

Comment ouvrir le format XML Comment ouvrir le format XML Apr 02, 2025 pm 09:00 PM

Utiliser la plupart des éditeurs de texte pour ouvrir des fichiers XML; Si vous avez besoin d'un affichage d'arbre plus intuitif, vous pouvez utiliser un éditeur XML, tel que Oxygen XML Editor ou XMLSPY; Si vous traitez les données XML dans un programme, vous devez utiliser un langage de programmation (tel que Python) et des bibliothèques XML (telles que XML.ETREE.ElementTree) pour analyser.

Formatage en ligne XML Formatage en ligne XML Apr 02, 2025 pm 10:06 PM

Les outils de format en ligne XML organisent automatiquement le code XML désordonné en formats faciles à lire et à maintenir. En analysant l'arbre de syntaxe de XML et en appliquant des règles de formatage, ces outils optimisent la structure du code, améliorant sa maintenabilité et son efficacité de travail d'équipe.

See all articles