Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di energie
    Registrato dal
    Apr 2003
    Messaggi
    446

    [JAVA]Jdom ed eliminazione elemento

    Ragazzi sto navigando nel javadoc di jdom ma neanche lì trovo quello che mi serve...io vorrei eliminare un elemento da un file xml e non un attributo...Non so come fare perchè gli elementi hanno tutti lo stesso nome:

    <Lista>
    <File ID="3" Size="30mb" >
    </File>
    <File ID="2" Size="33mb" >
    </File>
    <File ID="5" Size="12mb" >
    </File>
    </Lista>

    Vorrei ad esempio eliminare l'intero elemento File dove l'ID è 3...Sarò scemo io ma non trovo nella documentazione alcuna soluzione ma solo l'eliminazione degli attributi

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA]Jdom ed eliminazione elemento

    Originariamente inviato da energie
    Vorrei ad esempio eliminare l'intero elemento File dove l'ID è 3...Sarò scemo io ma non trovo nella documentazione alcuna soluzione ma solo l'eliminazione degli attributi
    Non conosco e non ho mai usato JDOM. Fatta questa premessa, posso provare a risponderti andando un po' ad intuito/ragionamento guardando il javadoc di JDOM.

    Vedo che Element ha un removeChild/removeChildren ma questi cancellano o il primo child o tutti i child in base al nome sotto forma di String. Quindi credo che non ti interessano.

    Vedo anche che sia Element che Document hanno un removeContent(Content). E Element .... è-un Content. Quindi se hai un reference al tuo elemento, puoi eliminarlo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di energie
    Registrato dal
    Apr 2003
    Messaggi
    446
    un reference?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da energie
    un reference?
    Non capisco la domanda/dubbio ......

    In Java i tipi di dati sono divisi in 2 categorie: i primitivi e i reference. Se hai:

    String pippo = "aaa";

    allora 'pippo' è una variabile "reference" di tipo String.

    Prima intendevo solo dire che se dalle tue ricerche/scansioni nell'albero dei nodi hai alla fin fine un reference al tuo Element che vuoi eliminare, allora puoi farlo come ho suggerito.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Prova con questa classe che ho scritto, dovrebbe essere quello che cerchi:

    Codice PHP:
    import java.io.*;
    import org.w3c.dom.*;
    import org.xml.sax.*;
    import javax.xml.parsers.*;
    import javax.xml.transform.*; 
    import javax.xml.transform.dom.DOMSource
    import javax.xml.transform.stream.StreamResult;

    public class 
    RemoveElement {
        static public 
    void main(String[] arg) {
            try{
                
                
    String xmlFile "C:\\\\mioFile.xml";
                
    File file = new File(xmlFile);
                
                
    String remElement "File";  //il nome del tag da eliminare
                
    String remId "3";   //il valore dell'attributo ID da eliminare
                
    if (file.exists()){
                    
    DocumentBuilderFactory factory DocumentBuilderFactory.newInstance();
                    
    DocumentBuilder builder factory.newDocumentBuilder();
                    
    Document doc builder.parse(xmlFile);
                    
    TransformerFactory tFactory TransformerFactory.newInstance();
                    
    Transformer tFormer tFactory.newTransformer();
                    
    NodeList lista doc.getElementsByTagName(remElement);
                    for(
    int i=0i<lista.getLength();i++){
                         
    Element element = (Element)doc.getElementsByTagName(remElement).item(i);
                         if(
    element.getAttribute("ID").equals(remId)){
                              
    //Rimuovo l'elemento
                              
    element.getParentNode().removeChild(element);
                              break;
                         }
                    }
                    

                    
    doc.normalize();
                    
    //Stampo il documento modificato
                    
    Source source = new DOMSource(doc);
                    
    Result dest = new StreamResult(System.out);
                    
    tFormer.transform(sourcedest);
                    
    System.out.println();
                }
                else{
                    
    System.out.println("File not found!");
                }
            }
            catch (
    Exception e){
                
    System.err.println(e);
                
    System.exit(0);
            }
        }

    Al mio segnale... scatenate l'inferno!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.