Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Ho affidato ai due modelli lo stesso mestiere ma non lo stesso identico prompt: trasformare una storia illustrata in un video usando una RTX 3090 e modelli locali. Ne sono usciti due film, due applicazioni e due idee opposte di efficienza. Fucina, progettata con Fable 5, colpisce di più nei primi secondi. Storyboard Studio, costruito con ChatGPT/Codex, regge meglio sulla distanza e vince il confronto complessivo, ma di stretta misura
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile
Lenovo ha lanciato il ThinkTab X11 rimettendo piede nel segmento dei tablet Android con il marchio Think dopo oltre un decennio di assenza. Il risultato è un dispositivo che prende una direzione precisa: massima dotazione funzionale, costruzione resistente, autonomia fuori dagli schemi
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot
AMD Advancing AI è l'appuntamento annuale con il quale l'azienda americana mostra quelle che sono le proprie novità dal versante datacenter. Tra piattaforma Helios, GPU Instinct MI455X e processori EPYC di sesta generazione tutto quello che serve per processare l'IA sempre più complessa ed esigente
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-07-2010, 15:37   #1
jj.69kt
Senior Member
 
L'Avatar di jj.69kt
 
Iscritto dal: Oct 2007
Messaggi: 677
[Java - XML+DOM] Cosa non capisco di questa funzione??

Ciao,
non sono proprio un novellino di Java, ma ho un problema alquanto assurdo.

Questo è il codice della mia funzione:
Codice:
/**
	 * Contiene il testo piatto senza tag e senza spaziature errate.
	 */
	private static String result = "";
	
	/**
	 * Contiene le informazioni sui tag. Nome, PosizioneApertura e PosizioneChiusura
	 */
	private static XMLDocumentTagInformation tag;
	
	private static void getFullText(NodeList NL){

		Node tmpNode = null;
		NodeList tmpList = null;
		tag = new XMLDocumentTagInformation();
		

		// Scandisco la lista dei Nodi fornita in ingresso 
		for(int i=0;i<NL.getLength();i++){
			
			tmpNode = NL.item(i);

			
			
			if(tmpNode.hasChildNodes()){
				// Se il nodo ha figli ne recupero la lista.
				tmpList = tmpNode.getChildNodes();
				
				// Stampa di DEBUG
				System.out.print(tmpNode.getNodeName()+" -> Ha figli! (Posizione: "+result.length()+", lunghezza: "+getTextLength(tmpNode)+")\n------\n\n");

				// Mi salvo:	 il nome del nodo, 					la posizione nel testo	   e	la lunghezza del nodo.
				tag.addTag(tmpNode.getParentNode().getNodeName(),	 result.length(), 				getTextLength(tmpNode));
				
				//Richiamo *ricorsivamente* la funzione sul resto del "documento"
				getFullText(tmpNode.getChildNodes());
			}

			// Se e' un nodo di testo ne ricavo il contenuto pulendolo da imperfezioni (spazi multipli, ritorni a capo ecc..)
			if(tmpNode.getNodeType() == Node.TEXT_NODE){
				String tmp = Utils.cleanStr(tmpNode.getTextContent());
				
				// Mi salvo il contenuto solo se e' "sostanzioso"
				if(tmp.trim().length() > 0)
					result +=tmp;
				
				// Stampa di DEBUG
				//System.out.println("Ha testo:\n"+tmp+"\n");
			}			
		}
	}
	
	
	
	private static int getTextLength(Node N) {

		return Utils.cleanStr(N.getTextContent()).length();
	}
mentre questa è la mia classe XMLDocumentTagInformation

Codice:
package cs.ltw.server.util;

import java.util.HashMap;
import java.util.Vector;

public class XMLDocumentTagInformation {
	
	private HashMap<Integer, String>	tagNames;
	private Vector<Integer>				tagOpenPos;
	private Vector<Integer>				tagClosePos;
	
	public XMLDocumentTagInformation(){
		super();
		
		this.tagNames		= new HashMap<Integer, String>();
		this.tagOpenPos		= new Vector<Integer>();
		this.tagClosePos	= new Vector<Integer>();
	}
	
	
	public Integer addTag(String name, Integer open, Integer close){
		
		tagNames.put(tagNames.size(), name);
		
		tagOpenPos.add(open);
		tagClosePos.add(close);
		
		return tagNames.size()-1;
	}
	
	public String toString(){
		
		if(tagNames.size() == 0)
			return "{ null }";
		
		String result = "{";
		for(int i=0;i<tagNames.size();i++){
			result += i +":";
			result += tagNames.get(i) +"(";
			
			result += tagOpenPos.get(i) +"-";
			result += tagClosePos.get(i) +"), ";
		}
		
		result.substring(0, result.length()-2);
		result += "}";
		
		return result;
	}

}

Chiamando la funzione getFullText su una lista di nodi ricavata con XPath, succede una cosa assai strana.
Su consolle mi stampa esattamente ciò che mi aspetto!
Ovvero: nome del nodo, posizione nel testo e lunghezza del nodo. Mentre quando è ora di aggiungere questi valori all'oggetto tag (un istanza di XMLDocumentTagInformation) non mi aggiunge assolutamente nulla...
Infatti se vado a stampare tag alla fine della computazione mi stampa "{ null }".

Cosa ancora piu strana se io sposto la riga:
Codice:
// Mi salvo:	 il nome del nodo, 					la posizione nel testo	   e	la lunghezza del nodo.
				tag.addTag(tmpNode.getParentNode().getNodeName(),	 result.length(), 				getTextLength(tmpNode));
all'inizio del for mi aggiunge soltanto 5 nodi: l'ultimo, ed a scalare i primi 4.. (Ultimo, 4°, 3°, 2°, 1°)


IDEE??




PS: Se notate nella stampa a video uso tmpNode.getNodeName() mentre nel'aggiunta all'oggetto "tag" uso invece mpNode.getParentNode().getNodeName(). Questo perchè se tento di aggiungere con lo stesso comando con cui stampo mi aggiunge tutti i nodi con nome #text invece che col loro vero nome.

Esempio di output:
Codice:
text -> Ha figli! (Posizione: 0, lunghezza: 8040)
------

body -> Ha figli! (Posizione: 0, lunghezza: 8040)
------

div1 -> Ha figli! (Posizione: 0, lunghezza: 8040)
------

head -> Ha figli! (Posizione: 0, lunghezza: 18)
------

head -> Ha figli! (Posizione: 18, lunghezza: 20)
------

p -> Ha figli! (Posizione: 38, lunghezza: 1293)
------

del -> Ha figli! (Posizione: 469, lunghezza: 4)
------

[Molti altri tag omessi per comodità._]

------

DOCUMENTO 1: 
di VINCENZO CERAMILE VISIONI DEL CALVOUna mattina mi svegliai, mi guardai allo specchio e dissi: "Adesso basta, debbo subito fare qualcosa!" Mi lavai la testa col mio solito sciampo per bambini e giù di corsa a prendere l'autobus. [_TestoMolto lungo Tagliato per comodità._]
-------------

Contenuto di 'tag': { null }

Aiutatemi per piacere!
__________________

Desktop: (In Vendita) iMac (12,2) 27" --> i5 QaudCore 2,7GHz, 8GB RAM, 1TB HDD..
Laptop (In Pensione): MacBook PRO (3,1) 15.4" (Glossy, ma pentito) --> 2.2Ghz, 4GB Ram..
Camera: Nikon D80 with Nikkor 18-55mm 1:3-5.6 GII + Nikkor 55-200mm 1:4-5.6 VR
"Mobile":iPhone 5 64Gb
MyEbay: 100%! • Mercatino (Green = Good; Red = Bad) UncleSam, Boxi80, Zuckerbaer, lamerone, danidj, maxmax80
jj.69kt è offline   Rispondi citando il messaggio o parte di esso
Old 09-07-2010, 19:51   #2
jj.69kt
Senior Member
 
L'Avatar di jj.69kt
 
Iscritto dal: Oct 2007
Messaggi: 677
Maledetta iterazione...

Ogni iterazione eseguivo questo comando:
Codice:
		tag = new XMLDocumentTagInformation();

Serve dire altro?
__________________

Desktop: (In Vendita) iMac (12,2) 27" --> i5 QaudCore 2,7GHz, 8GB RAM, 1TB HDD..
Laptop (In Pensione): MacBook PRO (3,1) 15.4" (Glossy, ma pentito) --> 2.2Ghz, 4GB Ram..
Camera: Nikon D80 with Nikkor 18-55mm 1:3-5.6 GII + Nikkor 55-200mm 1:4-5.6 VR
"Mobile":iPhone 5 64Gb
MyEbay: 100%! • Mercatino (Green = Good; Red = Bad) UncleSam, Boxi80, Zuckerbaer, lamerone, danidj, maxmax80
jj.69kt è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090 Fable e Sol a confronto: due cartoni animati cre...
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile Il tablet rugged leggero e sottile: Lenovo Think...
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot AMD Advancing AI 2026: l'hardware AMD per le ela...
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader Tascabile e con Android: BOOX Go 6 Gen II &egrav...
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro Recensione Lenovo Idea Tab Plus: il tablet da 12...
Xbox Game Pass, il mese di luglio 2026 s...
Smartphone troppo cari: Qualcomm ripensa...
Age of Empires III: Definitive Edition t...
GitHub contro i report fatti dall'IA: ri...
Google spinge sugli schermi ultra-wide: ...
Occhiali smart, Instagram bannerà chi re...
L'UE approva PRIMA: il chip fotovoltaico...
Nothing smentisce l'uscita da alcuni mer...
Tassa sui pacchi extra-UE, Giorgetti: da...
Jensen Huang esordisce su X: 'non mettet...
Ha reso lo smartphone e Amazon lo ha 'pe...
TOP 10 offerte del weekend Amazon: ai pr...
TV LG C6 e B5 da 55 pollici: due OLED da...
Tomb Raider: Catalyst rinviato al 2028, ...
Lefant M210 Omni a 265,99€: il robot sli...
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: 23:05.


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