35 messaggi dal 11 aprile 2002
Ho tre domande da porre riguardo l'oggetto msxml2.DOMDocument.3.0 che sto imparando ad utilizzare

1) Vorrei selezionare un nodo e aggiungerci un sottonodo, le domande sono due:

A) è possibile aggiungere un sottonodo ad un nodo appena creato e non ancora inserito nel file xml, e se si, come?

B) effettuo un ciclo su una serie di nodi, quando uno di questi soddisfa i requisiti necessari vorrei aggiungerci un sottonodo. Per intenderci faccio un ciclio " FOR EACH node in nodes " se al terzo nodo del mio ciclo volessi aggiungerci un figlio come posso utilizzarlo senza uscire dal ciclo?

2) Ho trovato un esempio per lavorare su dei file rss

FOR EACH objNode2 In objNode.childNodes
SELECT CASE objNode2.nodeName
CASE "enclosure"
strEnclosure = objNode2.getattribute("url")
CASE "title"
strTitle = objNode2.firstChild.nodevalue
CASE "link"
strURL = objNode2.firstChild.nodevalue
CASE "description"
strDescription = objNode2.firstChild.nodevalue
END SELECT
NEXT

Non riesco a comprendere la sintassi objNode2.firstChild.nodevalue che tra le altre cose mi restituisce errore nel caso il nodo sia privo di contenuto, che differenza c'è con usare objNode2.text

OT
Ringrazio chi ha risposto alle mie domande precedenti sempre su xml ma non capisco perchè pur avendo specificato di ricevere la notifica in caso di risposta questa non mi sia arrivata.

Grazie a tutti
Amedeo
Modificato da blackd13 il 07 settembre 2005 06.05 -
Faccio una precisazione che forse ti chiarirà un po' di dubbi: quando un file xml viene caricato in un parser DOM, in memoria si crea una copia della struttura xml, quindi "scollegata" rispetto al file. Tutte le modifiche che fai (aggiungere, togliere, modificare nodi, attributi, dichiarazioni, ecc.) avvengono *in memoria* e finché non richiami il metodo save il file xml non viene aggiornato.

1A - Per appendere un nodo devi usare il metodo appendChild
1B - Semplicemente, all'interno del ciclo, metti un if quindi, se la condizione è rispettata, invochi appendChild
2 - "objNode2.firstChild.nodevalue" è una sintassi standard (riconosciuta da tutti i parser, in accordo con le specifiche del W3C), mentre la proprietà "text" è un'estensione di Microsoft. In pratica MS ha introdotto una scorciatoia per fare una delle operazioni più comuni: recuperare il valore del testo contenuto in un nodo. In realtà il testo dentro un nodo è un sottonodo (di tipo textnode) del nodo stesso, per cui ecco spiegata la sintassi "objNode2.firstChild.nodevalue". Va da sè che, usando quest'ultima sintassi, dovresti prima verificare l'esistenza del sottonodo prima di chiedere nodeValue (in teoria dovresti anche verificare che il nodeType corrisponda ad un textNode).
Considerazione personale: se usi un parser Microsoft e, ragionevolmente non cambierai strada nell'evoluzione dell'applicazione, puoi tranquillamente usare le estensioni di MS: ti semplificano la vita e non poco (penso ad esempio a selectSingleNode rispetto a selectNodes, con verifica degli elementi restituiti, quindi la selezione del primo nodo...)

Spero di aver fugato un po' dei tuoi dubbi.
Ciao!

Matteo Casati
GURU4.net
35 messaggi dal 11 aprile 2002
Perfetto, mi accorgo di quanto siano banali certe cose, una volta che ti vengono spiegate!

Grazie

Amedeo
E' proprio vero. Se ti può consolare (o stimolare a continuare la tua experience nel fantastico mondo della programmazione) ti assicuro che più apprendi e più diventa facile apprendere, quindi sarai in grado di capire cose sempre più complesse e nuove senza che nessuno te le spieghi.
In attesa... la community è qui proprio per questo!

Matteo Casati
GURU4.net
35 messaggi dal 11 aprile 2002
Beh però nessuno è riuscito ancora a darmi una risposta alla domanda che ho postato sul forum "Windows Server, IIS & Security"


Forse non mi sono espresso bene

Grazie ciao
Amedeo

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.