Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart
Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart
Mentre Ubisoft vorrebbe chiedere agli utenti, all'occorrenza, di distruggere perfino le copie fisiche dei propri giochi, il movimento Stop Killing Games si sta battendo per preservare quella che l'Unione Europea ha già riconosciuto come una forma d'arte. Abbiamo avuto modo di parlare con Daniel Ondruska, portavoce dell'Iniziativa Europa volta a preservare la conservazione dei videogiochi
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione
Abbiamo provato il nuovo Galaxy S25 Edge, uno smartphone unico per il suo spessore di soli 5,8 mm e un peso super piuma. Parliamo di un device che ha pro e contro, ma sicuramente si differenzia dalla massa per la sua portabilità, ma non senza qualche compromesso. Ecco la nostra prova completa.
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto
Pensato per il professionista sempre in movimento, HP Elitebook Ultra G1i 14 abbina una piattaforma Intel Core Ultra 7 ad una costruzione robusta, riuscendo a mantenere un peso contenuto e una facile trasportabilità. Ottime prestazioni per gli ambiti di produttività personale con un'autonomia lontano dalla presa di corrente che permette di lavorare per tutta la giornata
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-01-2008, 09:52   #1
xxdavide84xx
Member
 
L'Avatar di xxdavide84xx
 
Iscritto dal: May 2006
Città: Cesenatico
Messaggi: 274
[JAVA] Serve la ricorsione???

Ci vuole la ricorsione??? Io ho queste 2 funzioni createBodyObjects() e createRObjects().

Io vorrei che mi memorizzasse in body prima 1 volta i valori di createBodyObjects() e poi entrasse in createRObjects() fino a che w:r non è uguale a null e mi memorizzasse i valori.

Poi dovrebbe ripassare a createBodyObjects() e incrementare i e memorizzare i valori, e poi rientrare nella seconda fino a che w:r non è uguale a null....

Dovrebbe fare questo fino a che i < bodyNodes.size(); (bodyNodes.size();=869 nel mio caso...)

Serve la ricorsione???
Qualcuno può aiutarmi a mettere in JAVA quello che ho detto?

Perchè ora come ora fa così entra in createBodyObjects() prende i valori, va in createRObjects() solo 1 volta prende il primo valore di w:r e torna createBodyObjects() e fai il giro prendendo sempre e solo il primo valore di w:r...

Codice:
codice: private void createBodyObjects() {
    for ( int i = 0; i < bodyNodes.size(); i++) {
      Node bodyNode = (Node)bodyNodes.elementAt(i);
      Body body = new Body();
      Node paragraphNode = getChildNode(bodyNode, "w:pPr");
      if ( paragraphNode != null ) {
        Node stileNode = getChildNode(paragraphNode, "w:pStyle");
        if ( stileNode != null )
          body.stile = getAttributeValue(stileNode, "w:val");
        Node jcNode = getChildNode(paragraphNode, "w:jc");
        if ( jcNode != null )
          body.jc = getAttributeValue(jcNode, "w:val");
      }
      createRObjects(body, bodyNode);
      bodyObjects.addElement(body);
    }
  }

  private void createRObjects(Body body, Node bodyNode) {
    Node rNode = getChildNode(bodyNode, "w:r");
    if ( rNode != null ) {
      Node rPrNode = getChildNode(rNode, "w:rPr");
      if ( rPrNode != null ) {
        Node grassettoNode = getChildNode(rPrNode, "w:b");
        if ( grassettoNode != null )
          body.grassetto = getAttributeValue(grassettoNode, "w:val");
        Node italicoNode = getChildNode(rPrNode, "w:i");
        if ( italicoNode != null )
          body.italico = getAttributeValue(italicoNode, "w:val");
      }
      Node testoNode = getChildNode(rNode, "w:t");
      if ( testoNode != null ) {
        Node testoNode1 = getChildNode(testoNode, "#text");
        if ( testoNode1 != null )
          body.testo = testoNode1.getNodeValue();
      }
      
    }
    
  }
__________________
CPU Intel i5-4590, Scheda Madre Asrock H97 Pro4, RAM DDR3 Corsair Vengeance 1600MHz 8GB CL9, Hard Disk WD Caviar Blue 1TB, SSD Crucial MX100 256GB.
xxdavide84xx è offline   Rispondi citando il messaggio o parte di esso
Old 15-01-2008, 11:01   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Così a naso (non conosco l'ambito di programmazione) direi che qui forse va ciclata tutta l'estrazione per ogni Node "w:r" contenuto nel Node passato come parametro "bodyNode" al metodo getChildNode(), se non ho capito male?

1) Non c'è un metodo per conoscere in quel Node (bodyNode) quanti nodi "child" di tipo "w:r" sono contenuti?

2) Non è che il metodo getChildNode() ti torna il primo Node child del tipo specificato (w:r) che incontra?

Nel caso 1) basterebbe invocare quel metodo per ottenere quanti Node child del tipo che ti interessa ci sono e fare un ciclo for...

Nel caso 2) invece getChildNode() funzia come un iteratore e magari basta utilizzare un while, ad esempio:
Codice:
while( getChildNode(bodyNode, "w:r") != null) {
//
}
oppure esiste un metodo del tipo getNextNode()?


Comunque l'eventuale ciclo lo inserirei appena dentro il corpo del metodo:
Codice:
private void createRObjects(Body body, Node bodyNode) {


    Node rNode = getChildNode(bodyNode, "w:r");


    if ( rNode != null ) {
      Node rPrNode = getChildNode(rNode, "w:rPr");
      if ( rPrNode != null ) {
        Node grassettoNode = getChildNode(rPrNode, "w:b");
        if ( grassettoNode != null )
          body.grassetto = getAttributeValue(grassettoNode, "w:val");
        Node italicoNode = getChildNode(rPrNode, "w:i");
        if ( italicoNode != null )
          body.italico = getAttributeValue(italicoNode, "w:val");
      }
      Node testoNode = getChildNode(rNode, "w:t");
      if ( testoNode != null ) {
        Node testoNode1 = getChildNode(testoNode, "#text");
        if ( testoNode1 != null )
          body.testo = testoNode1.getNodeValue();
      }
      
    }
    
  }
Ciao

Ultima modifica di banryu79 : 15-01-2008 alle 11:04.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 15-01-2008, 11:33   #3
xxdavide84xx
Member
 
L'Avatar di xxdavide84xx
 
Iscritto dal: May 2006
Città: Cesenatico
Messaggi: 274
1) Quello che mi chiedevo anch'io... qui
http://www.hwupgrade.it/forum/showthread.php?t=1652563
dove ho messo il programma completo (anche se qualche modifica l'ho effettuata...)

2) while( getChildNode(bodyNode, "w:r") != null)
sarebbe come dire
while ( rNode !=null)
visto che Node rNode = getChildNode(bodyNode, "w:r");
e se faccio così mi va in crash il programma.....

Grazie comunque!
__________________
CPU Intel i5-4590, Scheda Madre Asrock H97 Pro4, RAM DDR3 Corsair Vengeance 1600MHz 8GB CL9, Hard Disk WD Caviar Blue 1TB, SSD Crucial MX100 256GB.
xxdavide84xx è offline   Rispondi citando il messaggio o parte di esso
Old 15-01-2008, 11:39   #4
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da xxdavide84xx Guarda i messaggi
1) Quello che mi chiedevo anch'io...

2) while( getChildNode(bodyNode, "w:r") != null)
sarebbe come dire
while ( rNode !=null)
visto che Node rNode = getChildNode(bodyNode, "w:r");
e se faccio così mi va in crash il programma.....

Grazie comunque!
1) Ma questi metodi fanno parte di classi di qualche libreria/package?

2) no, la mia ipotesi era che getChildNode() funzionasse un po' come un iteratore dentro il nodo... ma non credo sia così in effetti, visto come viene usata non può essere
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 15-01-2008, 11:43   #5
xxdavide84xx
Member
 
L'Avatar di xxdavide84xx
 
Iscritto dal: May 2006
Città: Cesenatico
Messaggi: 274
Questa:
Codice:
private Node getChildNode(Node node, String nodeName) {
    NodeList childNodes = node.getChildNodes();
    for ( int i = 0; i < childNodes.getLength(); i++) {
      Node childNode = childNodes.item(i);
      if ( childNode.getNodeName().equals(nodeName) )
        return childNode;
    }
    return null;
  }

Questo è il mio programma completo:
Codice:
import java.io.*;
import java.util.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;

public class aa  {
  Vector styleNodes = new Vector();

  Vector styleObjects = new Vector();

  Vector rNodes = new Vector();

  Vector bodyNodes = new Vector();

  Vector bodyObjects = new Vector();

  public aa() {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = null;
    try {
      builder = factory.newDocumentBuilder();
    }
    catch (ParserConfigurationException e) {
      e.printStackTrace();
      System.exit(1);
    }
    Document document = null;
    try {
      PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("Martedì 15.txt", false)));
      document = builder.parse(new File("C:\\Documents and settings\\Administrator\\Desktop\\DAVIDE\\Dom\\tesi.xml"));
      findStyleNodes(document);
      createStyleObjects();
      printStyles(pw);
      findBodyNodes(document);
      createBodyObjects();
      printBody(pw);
      pw.close();
    }
    catch (Exception e) {
      e.printStackTrace();
      System.exit(1);
    }
  }

  private void findStyleNodes(Node startingNode) {
    NodeList childNodes = startingNode.getChildNodes();
    for ( int i = 0; i < childNodes.getLength(); i++) {
      Node actualNode = childNodes.item(i);
      if ( isStyleNode(actualNode) )
        styleNodes.addElement(actualNode);
      if ( actualNode.hasChildNodes() )
        findStyleNodes(actualNode);
    }
  }

  private boolean isStyleNode(Node node) {
    return node.getNodeName().equals("w:style");
  }

  private void createStyleObjects() {
    for ( int i = 0; i < styleNodes.size(); i++) {
      Node styleNode = (Node)styleNodes.elementAt(i);
      Style style = new Style();
      Node uinameNode = getChildNode(styleNode, "wx:uiName");
      if ( uinameNode != null )
        style.name = getAttributeValue(uinameNode, "wx:val");
      if ( uinameNode == null ) {
        Node nameNode = getChildNode(styleNode, "w:name");
        if ( nameNode != null )
          style.name = getAttributeValue(nameNode, "w:val");
      }
      Node basedNode = getChildNode(styleNode, "w:basedOn");
      if ( basedNode != null )
        style.based = getAttributeValue(basedNode, "w:val");
      Node pPrNode = getChildNode(styleNode, "w:pPr");
      if ( pPrNode != null ) {
        Node pstileNode = getChildNode(pPrNode, "w:pStyle");
        if ( pstileNode != null )
          style.pstile = getAttributeValue(pstileNode, "w:val");
        Node jcNode = getChildNode(pPrNode, "w:jc");
        if ( jcNode != null )
          style.jc = getAttributeValue(jcNode, "w:val");
      }
      Node paragraphNode = getChildNode(styleNode, "w:rPr");
      if ( paragraphNode != null ) {
        Node fontNode = getChildNode(paragraphNode, "wx:font");
        if ( fontNode != null )
          style.font = getAttributeValue(fontNode, "wx:val");
        Node sizeNode = getChildNode(paragraphNode, "w:sz");
        if ( sizeNode != null )
          style.size = getAttributeValue(sizeNode, "w:val");
        Node grassettoNode = getChildNode(paragraphNode, "w:b");
        if ( grassettoNode != null )
          style.grassetto = getAttributeValue(grassettoNode, "w:val");
        Node italicoNode = getChildNode(paragraphNode, "w:i");
        if ( italicoNode != null )
          style.italico = getAttributeValue(italicoNode, "w:val");
        Node sottolineatoNode = getChildNode(paragraphNode, "w:u");
        if ( sottolineatoNode != null )
          style.sottolineato = getAttributeValue(sottolineatoNode, "w:val");
      }
      styleObjects.addElement(style);
    }
  }

  private String getAttributeValue(Node node, String attributeName) {
    NamedNodeMap attributes = node.getAttributes();
    if ( attributes == null )
      return "";
    Node item = attributes.getNamedItem(attributeName);
    if ( item == null )
      return "";
    return item.getNodeValue();
  }

  private Node getChildNode(Node node, String nodeName) {
    NodeList childNodes = node.getChildNodes();
    for ( int i = 0; i < childNodes.getLength(); i++) {
      Node childNode = childNodes.item(i);
      if ( childNode.getNodeName().equals(nodeName) )
        return childNode;
    }
    return null;
  }

  private void printStyles(PrintWriter pw) {
    for ( int i = 0; i < styleObjects.size(); i++) {
      Style style = (Style)styleObjects.elementAt(i);
      System.out.println(style);
      pw.println(style);
    }
  }

  public static void main(String args[]) {
    new aa();
  }

  class Style  {
    String name;

    String based;

    String pstile;

    String jc;

    String font;

    String size;

    String grassetto;

    String italico;

    String sottolineato;

    public String toString() {
      StringBuffer buffer = new StringBuffer();
      if ( name != null ) {
        buffer.append("Stile: " + name + "\n");
        if ( based != null )
          buffer.append(" Basato su: " + based + "\n");
        if ( pstile != null )
          buffer.append(" pStyle: " + pstile + "\n");
        if ( jc != null )
          buffer.append(" Jc: " + jc + "\n");
        if ( font != null )
          buffer.append(" Font: " + font + "\n");
        if ( size != null )
          buffer.append(" Dimensione: " + size + "\n");
        if ( grassetto != null )
          buffer.append(" Grassetto " + grassetto + "\n");
        if ( italico != null )
          buffer.append(" Italico " + italico + "\n");
        if ( sottolineato != null )
          buffer.append(" Sottolineato: " + sottolineato + "\n");
      }
      return buffer.toString();
    }
  }

  private void findBodyNodes(Node startingNode) {
    NodeList childNodes = startingNode.getChildNodes();
    for ( int i = 0; i < childNodes.getLength(); i++) {
      Node actualNode = childNodes.item(i);
      if ( isBodyNode(actualNode) )
        bodyNodes.addElement(actualNode);
      if ( actualNode.hasChildNodes() )
        findBodyNodes(actualNode);
    }
  }

  private boolean isBodyNode(Node node) {
    return node.getNodeName().equals("w:p");
  }

  private void createBodyObjects() {
    for ( int i = 0; i < bodyNodes.size(); i++) {
      Node bodyNode = (Node)bodyNodes.elementAt(i);
      Body body = new Body();
      Node paragraphNode = getChildNode(bodyNode, "w:pPr");
      if ( paragraphNode != null ) {
        Node stileNode = getChildNode(paragraphNode, "w:pStyle");
        if ( stileNode != null )
          body.stile = getAttributeValue(stileNode, "w:val");
        Node jcNode = getChildNode(paragraphNode, "w:jc");
        if ( jcNode != null )
          body.jc = getAttributeValue(jcNode, "w:val");
      }
      createRObjects(body, bodyNode);
      bodyObjects.addElement(body);
    }
  }

  private void createRObjects(Body body, Node bodyNode) {
    Node rNode = getChildNode(bodyNode, "w:r");
    if ( rNode != null ) {
      Node rPrNode = getChildNode(rNode, "w:rPr");
      if ( rPrNode != null ) {
        Node grassettoNode = getChildNode(rPrNode, "w:b");
        if ( grassettoNode != null )
          body.grassetto = getAttributeValue(grassettoNode, "w:val");
        Node italicoNode = getChildNode(rPrNode, "w:i");
        if ( italicoNode != null )
          body.italico = getAttributeValue(italicoNode, "w:val");
      }
      Node testoNode = getChildNode(rNode, "w:t");
      if ( testoNode != null ) {
        Node testoNode1 = getChildNode(testoNode, "#text");
        if ( testoNode1 != null )
          body.testo = testoNode1.getNodeValue();
      }
    }
  }

  private void printBody(PrintWriter pw) {
    for ( int i = 0; i < bodyObjects.size(); i++) {
      Body body = (Body)bodyObjects.elementAt(i);
      System.out.println(body);
      pw.println(body);
    }
  }

  class Body  {
    String stile;

    String jc;

    String grassetto;

    String italico;

    String testo;

    public String toString() {
      StringBuffer buffer = new StringBuffer();
      if ( stile != null )
        buffer.append("Stile body: " + stile + "\n");
      if ( jc != null )
        if ( grassetto != null )
          buffer.append(" Grassetto body " + grassetto + "\n");
      if ( italico != null )
        buffer.append(" Italico body " + italico + "\n");
      buffer.append(" Testo body: " + testo + "\n");
      return buffer.toString();
    }
  }
}
__________________
CPU Intel i5-4590, Scheda Madre Asrock H97 Pro4, RAM DDR3 Corsair Vengeance 1600MHz 8GB CL9, Hard Disk WD Caviar Blue 1TB, SSD Crucial MX100 256GB.

Ultima modifica di xxdavide84xx : 15-01-2008 alle 11:46.
xxdavide84xx è offline   Rispondi citando il messaggio o parte di esso
Old 15-01-2008, 12:51   #6
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Codice:
private Node getChildNode(Node node, String nodeName) {
    NodeList childNodes = node.getChildNodes();
    for ( int i = 0; i < childNodes.getLength(); i++) {
      Node childNode = childNodes.item(i);
      if ( childNode.getNodeName().equals(nodeName) )
        return childNode;
    }
    return null;
  }
Perfetto... come vedi in getChildNode() il chiamante passa un oggetto Node al cui interno cercare un Nodo "figlio" il cui nome corrisponda a quello cercato, cioè il parametro "nodeName".

Il Nodo passato come parametro potrebbe contenere zero o più Nodi "figli"...
la lista di tutti i "nodi figli" contenuti in un dato nodo viene ottenuta così:

Codice:
NodeList childNodes = node.getChildNodes();
Ora in "childNodes" c'è la lista di tutti i nodi figlio di "node".

Però il resto del metodo si limita a prendere un "nodo figlio" dalla lista, controllare se il suo nome è uguale a quello voluto ("nodeName"), quindi tornare quel Nodo in caso affermativo, altrimenti proseguire l'iterazione prendendo il prossimo "nodo figlio" e così via, finchè non l'ha trovato o non ha raggiunto la fine della lista.

Chiaro che appena trova il primo che corrisponde, il metodo torna subito.


Quindi nel tuo codice, non devi utilizzare getChildNode() ma devi utilizzare un metodo che ti personalizzi tu, e che, passato in ingresso un Nodo e una String ti trovi, nel nodo padre tutti i nodi figlio con quel nome.

Codice:
public NodeList getAllChildNodes(Node parentNode, String childsName) {
    // trova tutti i nodi figlio che hanno il nome == childsName
}
Nota: se sai come istanziare una NodeList vuota e la sua interfaccia pubblica ti permette di popolarla puoi usare quella come tipo di ritorno del metodo.


@EDIT:
Ah, prima però sarebbe bene se tu guardassi la classe Node per vedere se già c'è un metodo che fa questo lavoro...

Ultima modifica di banryu79 : 15-01-2008 alle 13:00.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 15-01-2008, 13:38   #7
xxdavide84xx
Member
 
L'Avatar di xxdavide84xx
 
Iscritto dal: May 2006
Città: Cesenatico
Messaggi: 274
Se mettessi al posto di if while non potrei risolvere????
Così:

Codice:
private Node getAllChildNode(Node node, String nodeName) {
    NodeList childNodes = node.getChildNodes();
    for ( int i = 0; i < childNodes.getLength(); i++) {
      Node childNode = childNodes.item(i);
      while ( childNode.getNodeName().equals(nodeName) )
        return childNode;
    }
    return null;
  }
Forse qui a pagina 480 e 481 parlano di queste cose....ma non riesco a trovare bene come fare....mi puoi dare una mano a buttare giù il codice?
http://books.google.com/books?id=p89...4YZU#PPA480,M1
__________________
CPU Intel i5-4590, Scheda Madre Asrock H97 Pro4, RAM DDR3 Corsair Vengeance 1600MHz 8GB CL9, Hard Disk WD Caviar Blue 1TB, SSD Crucial MX100 256GB.

Ultima modifica di xxdavide84xx : 15-01-2008 alle 14:13.
xxdavide84xx è offline   Rispondi citando il messaggio o parte di esso
Old 15-01-2008, 14:20   #8
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Scusa ma adesso fino a stasera sono in sessione di programmazione con altri colleghi e non ho tempo; domattina

P.S.: quel while non credo vada bene... xchè continua ad aggiungere nodi solo finché ogni nodo incontrato ha il nome che vuoi... invece credo tu li voglia attraversare tutti e ogni volta controlli se quello attraversato ha il nome che cerchi.

A meno che quelli con lo stesso nome stiano tutti "vicini" (cioè sono contigui nella lista), in quel caso il while va bene, ma la struttura dati sai te come è fatta.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 15-01-2008, 14:36   #9
xxdavide84xx
Member
 
L'Avatar di xxdavide84xx
 
Iscritto dal: May 2006
Città: Cesenatico
Messaggi: 274
Appena puoi prova a postare....GRAZIE!!!

Anche col while mi da lo stesso risultato..ossia mi stampa tutti i w:p con w:pPr e i suoi attributi e col primo w:r


w:p è così composto:

come vedi dentro a w:p c'è sempre 1 solo w:pPr e possono essere 0 o più w:r.... mentre aml:annotation non mi interessano...

Quindi il problema è anche memorizzarli bene poi...oltre che trovarli tutti!!!
Cmq in quel libro ci sono i metodi del node, e dice che
NodeList getChildNodes
restituisce una NodeList contenente tutti i figli del Node corrente....
Aspetto tue notizie appena puoi e GRAZIE ancora...

Intanto naturalmente io provo a vedere se riesco da solo...
__________________
CPU Intel i5-4590, Scheda Madre Asrock H97 Pro4, RAM DDR3 Corsair Vengeance 1600MHz 8GB CL9, Hard Disk WD Caviar Blue 1TB, SSD Crucial MX100 256GB.

Ultima modifica di xxdavide84xx : 15-01-2008 alle 14:52.
xxdavide84xx è offline   Rispondi citando il messaggio o parte di esso
Old 15-01-2008, 15:29   #10
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
A proposito, mi è venuto un dubbio: tu ce l'hai sottomano la documentazione (javadoc) relativa?

Guarda qua che ce la fai da solo

-> Interface Node

-> Interface NodeList
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2008, 00:57   #11
xxdavide84xx
Member
 
L'Avatar di xxdavide84xx
 
Iscritto dal: May 2006
Città: Cesenatico
Messaggi: 274
Invece avrei bisogno di una MANO, perchè con le prove che ho fatto ho solo che peggiorato la situazione....

E non sono venuto a capo di nulla....

Codice:
private Node getChildNode(Node node, String nodeName) {
    NodeList childNodes = node.getChildNodes();
    for ( int i = 0; i < childNodes.getLength(); i++) {
      Node childNode = childNodes.item(i);
      if ( childNode.getNodeName().equals(nodeName) )
        return childNode;
    }
    return null;
  }
ma childNode è già una NodeList....

Mi sono perso.....

Secondo te cosa dovrei cambiare o aggiungere?

Mi ero dimenticato:
Se io creo una classe P e una classe R separate riesco a stampare tutti i w:r....
solo che prima mi stampa tutti i w:p e poi tutti i w:r....
Quindi in teoria ho i metodi giusti, è solo la concatenzaione che non funziona BENE....

A me andrebbe benissimo che w:p rimanesse sempre con gli stessi valori per tutti nodi w:r.....
es:
Stile body: CorpoTesi
jc: centrato
Testo body: ciao
grassetto: off
poi se cambia w:r, ma siamo nello stesso nodo potrebbe tenere in memoria in w:p che rimangono uguali
Stile body: CorpoTesi
jc: centrato
Testo: Gino
grassetto on

Oppure andrebbe bene mi scrive i w:p solo 1 volta e poi di fila tutti i w:r appartenenti allo stesso w:p come qui sotto:
Stile body: CorpoTesi
jc: centrato
Testo body: ciao
grassetto: off
Testo: Gino
grassetto on

A me andrebbero bene entrambi i modi, ma non riesco a implementare il programma per fare ciò....SPERO proprio tu riesca ad aiutarmi....
__________________
CPU Intel i5-4590, Scheda Madre Asrock H97 Pro4, RAM DDR3 Corsair Vengeance 1600MHz 8GB CL9, Hard Disk WD Caviar Blue 1TB, SSD Crucial MX100 256GB.

Ultima modifica di xxdavide84xx : 16-01-2008 alle 02:15.
xxdavide84xx è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2008, 11:23   #12
xxdavide84xx
Member
 
L'Avatar di xxdavide84xx
 
Iscritto dal: May 2006
Città: Cesenatico
Messaggi: 274
Mi è stato dato questo suggerimento:

"Dipende cosa vuoi far ritornare dal metodo! Node ovviamente no, visto che rappresenta solo 1 nodo. Potresti far ritornare un List<Node> (nel metodo crei ad esempio un ArrayList e ci appendi tutti i nodi che devi far ritornare).

Ma potresti anche far ritornare un NodeList. Nota che NodeList non è una classe ma una interfaccia. Quindi devi far ritornare una implementazione "concreta" di questa interfaccia. Quale implementazione? Semplice, la definisci tu! NodeList è molto semplice, ha solo 2 metodi: getLength() e item() e questi dati (lunghezza e elemento i-esimo) li hai anche da un ArrayList."

Per te qual'è la più semplice soluzione?
__________________
CPU Intel i5-4590, Scheda Madre Asrock H97 Pro4, RAM DDR3 Corsair Vengeance 1600MHz 8GB CL9, Hard Disk WD Caviar Blue 1TB, SSD Crucial MX100 256GB.
xxdavide84xx è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2008, 16:18   #13
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Ciao, oggi sono stato fuori sede tutto il giorno da un cliente.
Che ne dici di una cosa così:
Codice:
private ArrayList<Node> getChildNode(Node node, String nodeName) {

    ArrayList<Node> nodeList = new ArrayList<Node>();
    
    NodeList childNodes = node.getChildNodes();
    for ( int i = 0; i < childNodes.getLength(); i++) {
      Node childNode = childNodes.item(i);
      if ( childNode.getNodeName().equals(nodeName) )
        nodeList.add(childNode);
    }
    return null;
  }
Alla fine il metodo ti restituisce un ArrayList di oggetti Node.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart Intervista a Stop Killing Games: distruggere vid...
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione Samsung Galaxy S25 Edge: il top di gamma ultraso...
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto HP Elitebook Ultra G1i 14 è il notebook c...
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso Microsoft Surface Pro 12 è il 2 in 1 pi&u...
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet! Recensione REDMAGIC Astra Gaming Tablet: che spe...
Le 18 offerte Amazon del weekend, senza ...
Galaxy S25 Ultra 512GB sotto i 1.000€ su...
Vi piace l'iPhone nero? Su Amazon sono s...
MacBook Air M4 16GB/256GB e 16GB/512GB s...
4 portatili per risparmiare tanto ed ess...
San Marino multa TikTok: non controllano...
Dreame e Roborock in saldo su Amazon: ro...
Pazzesco su Amazon: crollano i prezzi de...
La Corea del Sud vorrebbe costruire una ...
Rilasciati i primi risultati delle anali...
Robot umanoidi low cost? Unitree ci prov...
Non solo Rocket Lab, anche Avio potrebbe...
Chips Act UE: 41,5 milioni di euro a Eph...
Ryzen Threadripper 9000 al debutto il 31...
Nuovi coupon nascosti Amazon (aggiorname...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 20:57.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v