Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    142

    estrazione di testo da xml

    Salve a tutti, vorrei un consiglio su un particolare utilizzo di parserXml java:

    come scritto nel titolo devo estrarre tutti gli elementi testuali da un documento xml.
    Devo scegliere fra un parser DOM e un parser SAX.

    In base alle mie conoscenze credo di poter affermare che nell'albero che crea DOM tutti e soli gli elementi testuali sono memorizzati nelle "foglie" (nodi senza figli) dell'albero?

    Esiste un metodo per accedere direttamente a tali foglie? Se si, questo rende l'utilizzo di DOM + efficiente rispetto all'utilizzo di SAX?

    Grazie anticipatamente
    <esistono cose che non esistono>

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

    Re: estrazione di testo da xml

    Originariamente inviato da Pete
    In base alle mie conoscenze credo di poter affermare che nell'albero che crea DOM tutti e soli gli elementi testuali sono memorizzati nelle "foglie" (nodi senza figli) dell'albero?
    Con l'approccio DOM si ha un albero di oggetti che rappresentano dei "nodi". Di che tipo sono questi oggetti (a livello di nomi di classi/interfacce) dipende dalla API specifica. Nel caso di uso di JAXP, il DOM segue le specifiche W3C, tutto quanto relativo al DOM è nel package org.w3c.dom.
    Nel caso di altra API es. la libreria JDOM, la filosofia alla base è la stessa ma cambiano ovviamente package, nomi, modo di uso dei nodi.

    In generale le parti testuali sono contenute in nodi di "testo", usando JAXP sono tutti i tipi org.w3c.dom.CharacterData e i vari sottotipi.

    Originariamente inviato da Pete
    Esiste un metodo per accedere direttamente a tali foglie?
    Beh, è un albero, no? E la API consente certamente di "navigare" avanti e indietro, su e giù nell'albero, prendendo i nodi figli di un nodo, o il parente, ecc...

    Dipende cosa devi fare e da cosa "sai" o ti aspetti sulla struttura dell'albero. Ma l'approccio tipico è comunque quello di scrivere del codice che entra man mano più in profondità nell'albero per ricavare le varie informazioni di interesse.

    Esiste anche XPath che consente di trovare i nodi di interesse specificando una espressione secondo certi criteri.

    Originariamente inviato da Pete
    Se si, questo rende l'utilizzo di DOM + efficiente rispetto all'utilizzo di SAX?
    In termini di efficienza (prestazioni, uso di memoria), SAX è più efficiente di DOM.
    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
    Registrato dal
    Mar 2009
    Messaggi
    142
    ok grazie credo quindi che userò SAX. A parte questo non ho capito bene come il tipo di dom (jaxp, jdom ecc) inluenzi il fatto che gli elementi testuali del documento xml sono contenuti nelle foglie dell'albero
    <esistono cose che non esistono>

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Pete
    ok grazie credo quindi che userò SAX.
    SAX è ad "eventi", potrebbe anche non andare bene per quello che vuoi fare (dipende ... ci sono casi in cui SAX non va bene). Se invece ti va bene ed è sufficiente allora ok. Ma sappi che, a seconda della tipologia e struttura del documento, potresti dover scrivere un certo po' di codice per tenere traccia di dove e a che livello (di annidamento) sei arrivato.

    Originariamente inviato da Pete
    A parte questo non ho capito bene come il tipo di dom (jaxp, jdom ecc) inluenzi il fatto che gli elementi testuali del documento xml sono contenuti nelle foglie dell'albero
    Lo ripeto: a livello generale nell'approccio DOM esistono svariati tipi di "nodi" (element, comment, text, ecc...). Ognuno di questi nodi è rappresentato da un tipo, classe o interfaccia a seconda della API usata. Per le parti di testo, c'è appunto un nodo di tipo "testo".

    Che poi secondo la API W3C del framework questo si chiama org.w3c.dom.Text (interfaccia) oppure che in JDOM si chiama org.jdom.Text (classe) ... concettualmente non cambia nulla.
    Cambiano appunto solo i nomi delle classi/interfacce e il modo di operare sui nodi e su come crearli.
    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.