Maison  >  Article  >  Mappage des balises de répétition XML avec des objets Java

Mappage des balises de répétition XML avec des objets Java

WBOY
WBOYavant
2024-02-13 18:20:09648parcourir

Éditeur php Apple vous expliquera comment mapper les balises de répétition XML aux objets Java dans cet article. XML est un format d'échange de données couramment utilisé et les objets Java sont des structures de données que nous utilisons souvent en programmation. Le mappage des balises de répétition XML sur des objets Java peut nous aider à traiter et à manipuler les données plus facilement. Cet article détaillera le processus et fournira des exemples pratiques pour vous aider à mieux comprendre. Explorons ensemble ce sujet amusant et pratique !

Contenu de la question

J'ai le prochain XML :

<mensajews>
    <respuestagetcabecerastype>
        <cabeceras>
            <cabecera>
                <id>1234</id>
                <tipomensaje>3</tipomensaje>
                <datos>
                    <fechaenvio>2023-12-13t00:05:00</fechaenvio>
                    <fechaenvio>2023-12-14t00:05:00</fechaenvio>
                </datos>
            </cabecera>
        </cabeceras>
    </respuestagetcabecerastype>
</mensajews>

Je souhaite mapper leurs données sur l'objet suivant :

public class cabecera implements serializable {

    /**
     * 
     */
    private static final long serialversionuid = -865317642824095952l;
    
    private int id;
    
    private int tipomensaje;
    
    private datosrecepcion datos;

datosrecepcion est une classe avec les variables suivantes :

public class datosrecepcion implements serializable {

    /**
     * 
     */
    private static final long serialversionuid = -6703565058845907875l;
    
    private list<string> fechaenvio;

Pour mapper des données XML à des objets, procédez comme suit :

List<Cabecera> listaCabeceras = new ArrayList<Cabecera>();
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse(new InputSource(new StringReader(xml.toString())));
            
            System.out.println("Root element: " + document.getDocumentElement().getNodeName());
            
            NodeList nList = document.getElementsByTagName("cabecera");
            for(int i = 0; i < nList.getLength(); i++) {
                Node nNode = nList.item(i);
                System.out.println("Current Element: " + nNode.getNodeName());
                
                Element element = (Element) nNode;
                System.out.println("id: " + element.getElementsByTagName("id").item(0).getTextContent());
                System.out.println("Tipo de mensaje: " + element.getElementsByTagName("tipoMensaje").item(0).getTextContent());
                System.out.println("Fecha de Envio: " + element.getElementsByTagName("fechaEnvio").item(0).getTextContent());
                
                Cabecera cabecera = new Cabecera();
                cabecera.setId(Integer.parseInt(element.getElementsByTagName("id").item(0).getTextContent()));
                cabecera.setTipoMensaje(Integer.parseInt(element.getElementsByTagName("tipoMensaje").item(0).getTextContent()));
                //cabecera.getDatos().setFechaEnvio(element.getElementsByTagName("fechaEnvio").item(0).getTextContent());
                listaCabeceras.add(cabecera);

Je veux savoir comment mapper des balises répétitives comme fechaenvio à mes objets Java. J'utilise la version Java 8 et ils ne me permettent actuellement pas d'utiliser une version supérieure

Merci.

Mappez les balises de répétition XML sur des objets Java

Solution de contournement

Vous pouvez faire ceci :

node datosnode = element.getelementsbytagname("datos").item(0);
element elementdatos = (element) datosnode;
nodelist fechaenviolist = elementdatos.getelementsbytagname("fechaenvio");
list<string> data = new arraylist<>();
for (i = 0; i < fechaenviolist.getlength(); i++) {
    data.add(fechaenviolist.item(i).gettextcontent());
}

cabecera.getdatos().setfechaenvio(data);
listacabeceras.add(cabecera);

En classe cabecera

private DatosRecepcion datos = new DatosRecepcion();

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer