Creazione di un DOM

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Steffy989
Prode Principiante
Messaggi: 2
Iscrizione: sabato 20 giugno 2015, 14:49
Sesso: Femminile

Creazione di un DOM

Messaggio da Steffy989 »

Salve, devo fare un progetto in cui bisogna implementare un’applicazione Java eseguibile dalla riga di comando che riceve come parametro il percorso sul filesystem di un e-book nel formato XML e ne consenta la lettura tramite console. Sono una principiante e ho problemi a capire come creare il DOM.
Il file XML è il seguente:

Codice: Seleziona tutto

 
<?xml version="1.0"?>
<!DOCTYPE book SYSTEM "book.dtd"> 
<book>
<metadata>
<title>Divina Commedia</title>
<author>Dante</author>
<year>1472</year>
<currentPage>1</currentPage>
</metadata>
<pages>
<page number='1'>
Nel mezzo del cammin di nostra vita 
</page>
<page number='2'>
mi ritrovai per una selva oscura ché la diritta via era smarrita.	
</page>
</pages>
</book>
Ho creato la classe Book che contiene
private Metadata metadata;
private HashMap<Integer,String> pages;
La classe Metadata che contiene
private String title;
private String author;
private int year;
private int currentPage;

Come devo costruire il DOM per riempire le variabili dichiarate nelle classi con i dati del doc xml? Grazie in anticipo per le risposte!
Ultima modifica di Steffy989 il sabato 20 giugno 2015, 22:01, modificato 2 volte in totale.
Avatar utente
SuperStep
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2037
Iscrizione: lunedì 19 dicembre 2011, 16:26
Desktop: Unity
Distribuzione: Ubuntu 16.04 LTS x86_64
Sesso: Maschile
Località: Somma Vesuviana (NA)

Re: Creazione di un DOM

Messaggio da SuperStep »

qui c'è la spiegazione ufficiale di oracle per maggiori dettagli: https://docs.oracle.com/javase/tutorial ... ngXML.html

quello che devi fare per aver un Document Object model è semplicemente:

Codice: Seleziona tutto

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder(); 
Document doc = db.parse(new File(filename));
doc sarà il tuo DOM element e potrai interagire con esso per spostarti e prelevare informazioni.

Ogni elemento è di tipo Node.

[EDIT]

cortesemente inserisci il codice xml nei tag
[ code] codice xml qui [/code]
utilizzando il bottone modifica sul primo post per una migliore lettura.
ubuntu 16.04 LTS 64-bit - Memoria: 31,3 Gib - Processore: Intel Core i7-5960X CPU @ 3.00 GHz × 16 - Grafica: AMD Radeon HD 7800 Series - Disco: SSD 256 GB x 4 (RAID 01)
Steffy989
Prode Principiante
Messaggi: 2
Iscrizione: sabato 20 giugno 2015, 14:49
Sesso: Femminile

Re: Creazione di un DOM

Messaggio da Steffy989 »

Grazie!
Io avevo iniziato a ragionare cosi:

Codice: Seleziona tutto

package ebookReader;

import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class BookLoader {
	private Document doc;
	
	public Book load(String path){
		Book b = new Book();
		read(path);
		return null;
	}
	
	

	private void read(String fileName) {

		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

		DocumentBuilder builder = null;

		try {
			builder = factory.newDocumentBuilder();
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		}

		try {
			doc = builder.parse(new File(fileName));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	

	
	private static void printNode(NodeList nodeList, Book b) {

		for (int count = 0; count < nodeList.getLength(); count++) {
			Node tempNode = nodeList.item(count);
			
			if (tempNode.getNodeType() == Node.ELEMENT_NODE) {
				if (tempNode.getNodeValue().equalsIgnoreCase("title")){
					b.getMetadata().setTitle(tempNode.getNodeValue());
					}
				if (tempNode.getNodeValue().equalsIgnoreCase("author")){
					b.getMetadata().setAuthor(tempNode.getNodeValue());
					}...
e cosi via per gli altri elementi.

E' corretto? Nuovamente grazie dell'aiuto.
Ultima modifica di Steffy989 il sabato 20 giugno 2015, 22:00, modificato 1 volta in totale.
Avatar utente
cortinico
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 477
Iscrizione: venerdì 15 maggio 2015, 16:49
Desktop: Unity
Distribuzione: Ubuntu 15.04 amd64
Sesso: Maschile
Località: Pisa
Contatti:

Re: Creazione di un DOM

Messaggio da cortinico »

Potresti modificare la tua risposta inserendo il codice all'interno dei tag
"Look wide, and even when you think you are looking wide – look wider still!"
http://ncorti.com
Avatar utente
jackynet92
Moderatore Globale
Moderatore Globale
Messaggi: 13413
Iscrizione: sabato 3 settembre 2011, 1:41
Desktop: Mate
Distribuzione: Ubuntu 16.04 64bit
Sesso: Maschile
Località: Torino

Re: Creazione di un DOM

Messaggio da jackynet92 »

Per postare correttamente i risultati del terminale e/o listati sul forum basta:
  • 1. selezionare il testo del terminale
    2. tasto destro copia (in alternativa premere Ctrl + maiusc + C)
    3. incollare sul forum negli appropriati code, ovvero selezionare il testo e cliccare su Codice

Codice: Seleziona tutto

[color=#FF0000] qui inserisci il testo [/color][ /code]

[code]in modo da ottenere qualcosa di simile
Provvedi a correggere il post, basta cliccare su modifica e seguire la procedura che ti ho spiegato.
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 6 ospiti