Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [java] parser xml

  1. #1

    [java] parser xml

    Salve a tutti!
    devo creare un parser Xml in java. Utilizzo le classi DOM, e tutto sembra funzionare a dovere MA:
    QUESTO E' il codice java:
    codice:
    for (node = doc.getDocumentElement().getFirstChild();node != null; node = node.getNextSibling()) {
    if (node.getLocalName()!=null){
     if (node.getLocalName().equalsIgnoreCase("funzione")){
    System.out.println("nodo funzione: " + node.getLocalName());
    System.out.println("at: " + node.getAttributes()).getNamedItem("id"));
    NodeList listaNodiFz = node.getChildNodes();
      for(int u=0;u<listaNodiFz.getLength();u++){
         if(listaNodiFz.item(u).getNodeName().equals("profilo")){
     System.out.println("DA LISTA : + listaNodiFz.item(u).getNodeName());
     System.out.println("val: " + listaNodiFz.item(u).getNodeValue());
           }
    e questo l'XML:

    codice:
    <funzione id="pippo">
    <minnie> pluto </minnie>
    <minnie> paperino </minnie>
    </funzione>
    In pratica mi stampa tutto tranne pluto e paperino.. qualcuno sa dirmi come fare?? getNodeValue() mi torna NULL!!!

  2. #2
    devi creare un textnode e aggiungerlo come child al nodo minnie

  3. #3

    sorry...

    mi sono spiegata male.. ma devo leggerlo l'xml non scriverlo

  4. #4
    Utente di HTML.it L'avatar di Corwin
    Registrato dal
    Jan 2002
    Messaggi
    584
    if(listaNodiFz.item(u).getNodeName().equals("profi lo")){

    non mi sembra di aver visto tag <profilo> nel tuo file xml...
    prova a togliere questo if...
    I don't wanna have to shout it out / I don't want my hair to fall out
    I don't wanna be filled with doubt / I don't wanna be a good boy scout
    I don't wanna have to learn to count / I don't wanna have the biggest amount
    I don't wanna grow up

  5. #5
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Ciao; scusami ma invece di:

    codice:
    for (node = doc.getDocumentElement().getFirstChild();node != null; node = node.getNextSibling()) {
    if (node.getLocalName()!=null){
     if (node.getLocalName().equalsIgnoreCase("funzione")){
    System.out.println("nodo funzione: " + node.getLocalName());
    System.out.println("at: " + node.getAttributes()).getNamedItem("id"));
    NodeList listaNodiFz = node.getChildNodes();
      for(int u=0;u<listaNodiFz.getLength();u++){
         if(listaNodiFz.item(u).getNodeName().equals("profilo")) {
     System.out.println("DA LISTA : + listaNodiFz.item(u).getNodeName());
     System.out.println("val: " + listaNodiFz.item(u).getNodeValue());
           }
    vedendo il tuo file xml non dovresti fare:

    codice:
    for (node = doc.getDocumentElement().getFirstChild();node != null; node = node.getNextSibling()) {
    if (node.getLocalName()!=null){
     if (node.getLocalName().equalsIgnoreCase("funzione")){
    System.out.println("nodo funzione: " + node.getLocalName());
    System.out.println("at: " + node.getAttributes()).getNamedItem("id"));
    NodeList listaNodiFz = node.getChildNodes();
      for(int u=0;u<listaNodiFz.getLength();u++){
         if(listaNodiFz.item(u).getNodeName().equals("minnie")) {
     System.out.println("DA LISTA : + listaNodiFz.item(u).getNodeName());
     System.out.println("val: " + listaNodiFz.item(u).getNodeValue());
           }
    Fammi sapere se così funzica, ciao
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  6. #6

    ehm....

    si in effetti è così..
    ma non funzica ancora... ho modificato l'XML X postarlo qui e ho dimenticato di modificare il codice :quote: :quote:

  7. #7
    Utente di HTML.it L'avatar di Corwin
    Registrato dal
    Jan 2002
    Messaggi
    584
    for(int u=0;u<listaNodiFz.getLength()-1;u++){

    i nodi sono numerati da zero a listaNodiFz.getLength()-1. Ma non credo risolva il tuo problema.

    [Edit]

    Come non detto, usi il simbolo <
    I don't wanna have to shout it out / I don't want my hair to fall out
    I don't wanna be filled with doubt / I don't wanna be a good boy scout
    I don't wanna have to learn to count / I don't wanna have the biggest amount
    I don't wanna grow up

  8. #8
    infatti non va...
    ma ho capito l'errore:
    il problema è che era valorizzato il nodo "figlio" e io chiedevo il valore al "padre"

    codice:
    out.print("valore:"+listaNodiFz.itemu(i).getFirstChild() .getNodeValue());

  9. #9
    devi considerare che il valore compreso tra i tags <minnie> e' un nodo a se stante. e ti diro' di piu': dovessi allo stesso modo parsare un file html anche le <textarea> e il loro contenuto vanno trattati alla stessa maniera

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.