XML DOM Rimuovere i nodi
Il metodo removeChild() rimuove un nodo specificato.
Il metodo removeAttribute() rimuove un attributo specificato.
Provalo tu stesso - Esempi
Gli esempi utilizzano il file XML books.xml .
Questo esempio utilizza removeChild() per rimuovere il primo elemento <book>.
Questo esempio utilizza parentNode e removeChild() per rimuovere l'elemento <book> corrente.
Questo esempio utilizza removeChild() per rimuovere il nodo di testo dal primo elemento <title>.
In questo esempio viene utilizzata la proprietà nodeValue() per cancellare il nodo di testo del primo elemento <title>.
Questo esempio utilizza removeAttribute() per rimuovere l'attributo "categoria" dal primo elemento <book>.
Questo esempio utilizza removeAttributeNode() per rimuovere tutti gli attributi da tutti gli elementi <book>.
Rimuovere un nodo elemento
Il metodo removeChild() rimuove un nodo specificato.
Quando un nodo viene rimosso, vengono rimossi anche tutti i suoi nodi figli.
Questo codice rimuoverà il primo elemento <book> dall'xml caricato:
Esempio
y = xmlDoc.getElementsByTagName("book")[0];
xmlDoc.documentElement.removeChild(y);
Esempio spiegato:
- Supponiamo che " books.xml " sia caricato in xmlDoc
- Imposta la variabile y come nodo dell'elemento da rimuovere
- Rimuovere il nodo dell'elemento utilizzando il metodo removeChild() dal nodo padre
Rimuovi me stesso - Rimuovi il nodo corrente
Il metodo removeChild() è l'unico modo per rimuovere un nodo specificato.
Quando sei passato al nodo che vuoi rimuovere, è possibile rimuovere quel nodo usando la proprietà parentNode e il metodo removeChild():
Esempio
x = xmlDoc.getElementsByTagName("book")[0];
x.parentNode.removeChild(x);
Esempio spiegato:
- Supponiamo che " books.xml " sia caricato in xmlDoc
- Imposta la variabile y come nodo dell'elemento da rimuovere
- Rimuovere il nodo dell'elemento utilizzando la proprietà parentNode e il metodo removeChild()
Rimuovere un nodo di testo
Il metodo removeChild() può essere utilizzato anche per rimuovere un nodo di testo:
Esempio
x = xmlDoc.getElementsByTagName("title")[0];
y = x.childNodes[0];
x.removeChild(y);
Esempio spiegato:
- Supponiamo che " books.xml " sia caricato in xmlDoc
- Imposta la variabile x come primo nodo dell'elemento titolo
- Imposta la variabile y come nodo di testo da rimuovere
- Rimuovere il nodo dell'elemento utilizzando il metodo removeChild() dal nodo padre
Non è molto comune usare removeChild() solo per rimuovere il testo da un nodo. È invece possibile utilizzare la proprietà nodeValue. Vedi paragrafo successivo.
Cancella un nodo di testo
La proprietà nodeValue può essere utilizzata per modificare il valore di un nodo di testo:
Esempio
xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue = "";
Esempio spiegato:
- Supponiamo che " books.xml " sia caricato in xmlDoc
- Ottieni il primo nodo figlio del primo elemento del titolo.
- Utilizzare la proprietà nodeValue per cancellare il testo dal nodo di testo
Rimuovere un nodo di attributo per nome
Il metodo removeAttribute( ) rimuove un nodo di attributo in base al suo nome.
Esempio: removeAttribute('categoria')
Questo codice rimuove l'attributo "categoria" nel primo elemento <book>:
Esempio
x = xmlDoc.getElementsByTagName("book");
x[0].removeAttribute("category");
Esempio spiegato:
- Supponiamo che " books.xml " sia caricato in xmlDoc
- Usa getElementsByTagName() per ottenere nodi libro
- Rimuovere l'attributo "categoria" dal primo nodo dell'elemento libro
Scorri e rimuovi l'attributo "categoria" di tutti gli elementi di <libro>:
Rimuovi i nodi di attributo per oggetto
Il metodo removeAttributeNode( ) rimuove un nodo attributo, utilizzando l'oggetto nodo come parametro.
Esempio: removeAttributeNode(x)
Questo codice rimuove tutti gli attributi di tutti gli elementi <book>:
Esempio
x = xmlDoc.getElementsByTagName("book");
for (i = 0; i < x.length; i++)
{
while (x[i].attributes.length > 0) {
attnode = x[i].attributes[0];
old_att = x[i].removeAttributeNode(attnode);
}
}
Esempio spiegato:
- Supponiamo che " books.xml " sia caricato in xmlDoc
- Usa getElementsByTagName() per ottenere tutti i nodi del libro
- Per ogni elemento del libro controlla se ci sono degli attributi
- Mentre ci sono attributi in un elemento libro, rimuovi l'attributo