Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Elemento xml tramite java

    Salve ragazzi,
    io ho il seguente file xml
    codice:
    <?xml version="1.0" encoding="UTF-8"?><rdf:RDF xmlns="http://www.owl-ontologies.com/micie.owl#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:protege="http://protege.stanford.edu/plugins/owl/protege#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:swrl="http://www.w3.org/2003/11/swrl#" xmlns:swrlb="http://www.w3.org/2003/11/swrlb#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:xsp="http://www.owl-ontologies.com/2005/08/07/xsp.owl#" xml:base="http://www.owl-ontologies.com/micie.owl">
    
    
    <ELEMENT rdf:ID="ELEMENT_1">
        <id_element rdf:datatype="http://www.w3.org/2001/XMLSchema#string">23455878</id_element>
        <operative_level>
          <FUZZY_NUMBER rdf:about="#0.3">
            <certainty rdf:datatype="http://www.w3.org/2001/XMLSchema#float">0.3</certainty>
            <left_bound rdf:datatype="http://www.w3.org/2001/XMLSchema#float">1.0</left_bound>
            <right_bound rdf:datatype="http://www.w3.org/2001/XMLSchema#float">3.0</right_bound>
            <center_vertex rdf:datatype="http://www.w3.org/2001/XMLSchema#float">2.0</center_vertex>
          </FUZZY_NUMBER>
        </operative_level>
    </ELEMENT>
    </rdf:RDF>
    Voglio farmi restituire l'elemento ELEMENT per poi poterlo aggiungere come figlio di un altro elemento che ho in un altro file. Come posso fare?

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

    Re: Elemento xml tramite java

    Originariamente inviato da royaleagle25
    Voglio farmi restituire l'elemento ELEMENT per poi poterlo aggiungere come figlio di un altro elemento che ho in un altro file. Come posso fare?
    Beh ma dipende innanzitutto da quale approccio (DOM immagino) vuoi usare e quali API specifica vuoi usare (JAXP? JDOM? DOM4J?).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Si DOM. nn so da dove iniziare.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da royaleagle25
    Si DOM. nn so da dove iniziare.
    Tra i miei Java Examples (in firma) trovi esempi per lavorare con XML e già da lì puoi prendere spunto. Poi comunque quel <ELEMENT> non è il tag radice ma più dentro, quindi comunque vuol dire che devi andare a cercarlo tu. Se è sempre il primo figlio del tag radice, è tuttavia facile. Ma ripeto, dipende tutto dalla API specifica che intendi usare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    <?xml version="1.0" encoding="UTF-8"?>
    codice:
    <rdf:RDF xmlns="http://www.owl-ontologies.com/micie.owl#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:protege="http://protege.stanford.edu/plugins/owl/protege#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:swrl="http://www.w3.org/2003/11/swrl#" xmlns:swrlb="http://www.w3.org/2003/11/swrlb#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:xsp="http://www.owl-ontologies.com/2005/08/07/xsp.owl#" xml:base="http://www.owl-ontologies.com/micie.owl">
    
    
    <ELEMENT rdf:ID="ELEMENT_1">
        <id_element rdf:datatype="http://www.w3.org/2001/XMLSchema#string">23455878</id_element>
        <operative_level>
          <FUZZY_NUMBER rdf:about="#0.3">
            <certainty rdf:datatype="http://www.w3.org/2001/XMLSchema#float">0.3</certainty>
            <left_bound rdf:datatype="http://www.w3.org/2001/XMLSchema#float">1.0</left_bound>
            <right_bound rdf:datatype="http://www.w3.org/2001/XMLSchema#float">3.0</right_bound>
            <center_vertex rdf:datatype="http://www.w3.org/2001/XMLSchema#float">2.0</center_vertex>
          </FUZZY_NUMBER>
        </operative_level>
    </ELEMENT>
    </rdf:RDF>
    Si ELEMENT è sempre il primo figlio!!
    Usando JAXP come posso fare?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da royaleagle25
    Si ELEMENT è sempre il primo figlio!!
    Ok

    Originariamente inviato da royaleagle25
    Usando JAXP come posso fare?
    Guarda innanzitutto il mio esempio che legge un XML con approccio DOM usando JAXP (e anche l'altro opposto che scrive).

    Tu avrai 2 file XML, fai il parsing di entrambi ed otterrai 2 Document. Prendi il Element "radice" per entrambi. Solo per il primo (il XML "sorgente") prendi la lista dei "figli" del Element radice. Quando prima dicevo che <ELEMENT> è il primo figlio sottintendevo il primo nodo figlio .... ma di tipo Element. Se ci sono spazi/newline, hai dei text node in mezzo!!

    Appena trovi un nodo figlio della radice che è un Element con name "ELEMENT", l'hai trovato. Lo rimuovi dalla radice, quindi lo appendi nel Element radice dell'altro documento. Alla fine riscrivi questo secondo documento.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    codice:
    String uri="file:///C:/wstelco/eci.owl";
    String uriOntology="file:///C:/wstelco/Micie.owl";
    		
    			
    try{
    // lettura 
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document document = builder.parse(uri);
    Element root = document.getDocumentElement();
    NodeList elementi = root.getChildNodes();
    Element element=null;
    					
    for (int i = 0; i < elementi.getLength(); i++) {
    Node node = elementi.item(i);
    
    // Checks if the child node of <ELEMENT> is a <ELEMENT>.
    if (node.getNodeType() == Node.ELEMENT_NODE &&node.getNodeName().equals("ELEMENT")){
    element = (Element) node;
    				                
     break;				            
     }
    }
    
    //scrittura					 
    DocumentBuilderFactory factory1 = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder1 = factory1.newDocumentBuilder();
    Document document1 = builder1.parse(uriOntology);
    Element root1 = document1.getDocumentElement();
    System.out.println(root1.toString());
    root1.appendChild(element);
    				    
    TransformerFactory tf = TransformerFactory.newInstance();
    Transformer transformer = tf.newTransformer();
    
    		            Source source = new DOMSource(document1);
    		            Result result = new StreamResult("def1.xml");
    		            transformer.transform(source, result);
    }

    mi dà il seguente errore
    WRONG_DOCUMENT_ERR: A node is used in a different document than the one that created it.

    sicuro è nell'append! perchè devo cancellarlo l'elemento?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da royaleagle25
    mi dà il seguente errore
    WRONG_DOCUMENT_ERR: A node is used in a different document than the one that created it.

    sicuro è nell'append! perchè devo cancellarlo l'elemento?
    E (quasi) lo sapevo che incappavi in questo. La questione è che le API del DOM w3c sono basate su "factory", è il Document che generalmente costruisce e fornisce i vari oggetti (Element, Attr ecc..). Ogni nodo viene associato ad un preciso oggetto Document e chiaramente nodi di Document differenti non possono subito essere mischiati.

    Vedi in Document due metodi: adoptNode() e importNode(). Credo che ti convenga usare il secondo. A quel punto non devi rimuovere nulla. Il Node che ti restituisce importNode lo aggiungi tranquillamente nel secondo documento.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    ho provato con entrambi i metodi e mi restituisce sempre lo stesso errore!!! Aiuto!!

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da royaleagle25
    ho provato con entrambi i metodi e mi restituisce sempre lo stesso errore!!! Aiuto!!
    Una cosa del tipo:

    codice:
    root2.appendChild(document2.importNode(node, true));
    document2 è il Document dove aggiungi e root2 chiaramente il suo Element radice. node è il Node effettivamente Element (il tuo <ELEMENT>).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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