Visualizzazione dei risultati da 1 a 4 su 4

Discussione: JAXB con condizione IF

  1. #1
    Utente di HTML.it L'avatar di Poker1
    Registrato dal
    Jul 2002
    Messaggi
    479

    JAXB con condizione IF

    Ciao a tutti,

    ho un file XML in cui un determinato tag può avere una descrizione diversa in base ad un suo attributo:

    <mioTag attributo="1">
    <parametro>A</parametro>
    <valore>1</valore>
    </mioTag>

    <mioTag nome="1">
    <famiglia>A</famiglia>
    <specie>8</specie>
    </mioTag>

    Ho messo nomi a caso, quello che intendo è che: quando mioTag ha l'attributo "attributo", la sua struttura sarà composta da parametro e valore. Se invece mioTag na come attributo "nome", la stua struttura sarà composta da famiglia e specie.

    Ora come ora, io gestisco il primo caso. Ho creato il file XSD che descrive la struttura e poi ho generato le classi JAVA con jaxb, il quale mi ha inserito tutte le annotations necessarie.

    Come potrei fare a modificare il tutto... con questa nuova condizione ?
    Non riscrivere la ruota, usa le librerie.
    by Bjarne Stroustrup
    EIDON SOFT MEMBER

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Poker1 Visualizza il messaggio
    quando mioTag ha l'attributo "attributo", la sua struttura sarà composta da parametro e valore. Se invece mioTag na come attributo "nome", la stua struttura sarà composta da famiglia e specie.
    Queste strutture sono state scelte/imposte da te? O ti sono state richieste/imposte?
    Nel primo caso: puoi imporre che le due strutture (<mioTag> intendo) siano in namespace differenti? Perché così al 99% (nel senso: dovrei verificarlo praticamente) si dovrebbe poter fare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Poker1
    Registrato dal
    Jul 2002
    Messaggi
    479
    Le strutture le ho decise io. Però, pensando a cosa devo farci, forse la condizione di IF potrebbe non servirmi perche potrei volerle utilizzare contemporaneamente, e a questo punto mioTag resterebbe cosi come è, ed aggiungerei un'altra struttura.

    In due parole quello che devo fare è:

    - <mioTag table="nome_tabella"> -> In questo caso sto definendo la struttura della tabella che voglio utilizzare come sorgente dati, quindi questa avrà delle colonne ecc
    - <mioTag file="miofile.txt"> -> In questo caso sto dicendo che la sorgente dei dati arriva da file esterno, e quindi elencare una serie di caratteristiche

    Piuttosto che fare due tag come: <Database> e <Filesystem>, avevo intenzione di differenziare il tutto con un IF in modo da utilizzare lo stesso tag, ma con due "scopi" differenti.

    Se però voglio utilizzare congiuntamente una sorgente dati Database + Filestem, devo "necessariamente" fare due Tag:

    Anche se:
    <mioTag tabella="nome_tabella"> + <mioTag file="mio_file.txt">

    sarebbe molto meglio che
    <database tabella="nome_tabella"> + <filesystem file="mio_file.txt">

    Il tag ha la steffa funzione, ovvero reperire dati da una sorgente. Avere lo stesso nome ma trattarlo con due modalità distinte, lo preferirei... a sapere come fare :-D
    Non riscrivere la ruota, usa le librerie.
    by Bjarne Stroustrup
    EIDON SOFT MEMBER

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Poker1 Visualizza il messaggio
    Piuttosto che fare due tag come: <Database> e <Filesystem>, avevo intenzione di differenziare il tutto con un IF in modo da utilizzare lo stesso tag, ma con due "scopi" differenti.
    Se lo "sfizio" è solo questo .... no, allora secondo me sarebbero molto meglio i due <Database> e <Filesystem>. Non solo perché così il unmarshal diventa banale e immediato (se le due classi che modellano i due XML sono entrambe nel JAXBContext, JAXB è in grado di riconoscere il tag radice e creare l'oggetto "giusto") ma oltretutto il documento risulta anche più "parlante" ed esplicativo.


    Se vuoi avere lo stesso nome del tag radice e due classi che modellano due contenuti differenti, per quanto ne so su JAXB il modo (forse l'unico?) è differenziare con un namespace. Di più non so dirti, nel senso che dovrei documentarmi pure io!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.