|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: May 2006
Città: Cesenatico
Messaggi: 274
|
[Java] Come operare ora in questo programma?
Io ho questo programma che mi crea un file .txt e voglio ora analizzarlo e fare ulteriori controlli.
Mi conviene scrivere un nuovo programma, oppure implementare ed aumentare questo già in uso (qui sotto)? Codice:
import org.w3c.dom.*; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; import javax.xml.parsers.*; import java.io.*; /** DomDocumentCleanParser: versione di DomDocumentParser con output dei soli elementi di interesse per il nostro esempio. */ public class Dom { public static org.w3c.dom.Node getChild(org.w3c.dom.Node parentNode, int childIndex) { org.w3c.dom.Node childNode = parentNode.getChildNodes().item(childIndex); return childNode; } /* Array che mappa i tipi di elemento con l'indice int corrispondente * alle specifiche per i node types di: * Document Object Model (DOM) Level 2 Core Specification * (http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113) */ static final String[] typeName = { "none", "Element", "Attr", "Text", "CDATA", "EntityRef", "Entity", "ProcInstr", "Comment", "Document", "DocType", "DocFragment", "Notation" }; public static void main(String[] args) { if ( args.length != 1 ) { System.err.println("Usage: java Dom nomefile.xml"); System.exit(1); } Dom ddp = new Dom(); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { int cont = 0; PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("Tesi.txt", false))); DocumentBuilder builder = dbf.newDocumentBuilder(); Document document = builder.parse(new File(args[0])); ddp.printNodeInfo(pw, document, cont); pw.close(); } catch (FileNotFoundException fnf) { fnf.printStackTrace(); } catch (SAXException sxe) { Exception x = sxe; if ( sxe.getException() != null ) x = sxe.getException(); x.printStackTrace(); } catch (ParserConfigurationException pce) { pce.printStackTrace(); } catch (IOException ioe) { ioe.printStackTrace(); } } // main /** printNodeInfo(Node node) * Metodo che esplora l'albero Dom ricorsivamente e stampa a video * le informazioni sugli elementi. */ private void printNodeInfo(PrintWriter pw, Node currentNode, int cont) { String sNodeName = currentNode.getNodeName(); int iNodeType = currentNode.getNodeType(); String sNodeValue = currentNode.getNodeValue(); int iChildNumber = currentNode.getChildNodes().getLength(); NamedNodeMap nnmAttributes = currentNode.getAttributes(); if ( sNodeName != "#document" && cont != 1 ) cont = 0; if ( sNodeName == "w:styles" || sNodeName == "w:docPr" || sNodeName == "w:body" ) cont = 1; if ( cont == 1 ) { pw.flush(); pw.println("Nome nodo: " + sNodeName); pw.flush(); pw.println("Tipo nodo: " + typeName[iNodeType]); pw.flush(); if ( sNodeValue != null ) pw.println("Valore nodo: " + sNodeValue); pw.flush(); if ( iChildNumber != 0 ) pw.println("Numero figli: " + iChildNumber); pw.flush(); if ( printAttributes(nnmAttributes) != "assenti" ) pw.println("Attributi: " + printAttributes(nnmAttributes)); pw.flush(); pw.println(); pw.flush(); } //Se non si tratta di una foglia continua l'esplorazione ricorsivamente if ( iChildNumber > 0 ) { NodeList nlChilds = currentNode.getChildNodes(); for ( int iChild = 0; iChild < iChildNumber; iChild++) { printNodeInfo(pw, nlChilds.item(iChild), cont); } } } /** printAttributes(NamedNodeMap nnm) * Metodo utilizzato per la formattazione degli attributi ricavati da * un elemento. */ private static String printAttributes(NamedNodeMap nnm) { String sAttrList = new String(); if ( nnm != null && nnm.getLength() > 0 ) { for ( int iAttr = 0; iAttr < nnm.getLength(); iAttr++) { sAttrList += nnm.item(iAttr).getNodeName(); sAttrList += "="; sAttrList += nnm.item(iAttr).getNodeValue(); sAttrList += "; "; } return sAttrList; } else { return "assenti"; } } } Io vorrei controllare che nel corpo del testo vi fossero alcune parole tipo "bibbliografia", "Introduzione", etc, ma la cosa più difficile è riuscire a controllare che il testo rispetti Times New Roman 12 o 13, in quanto lo stile viene memorizzato prima con tutte le opzioni e viene solo richiamato nel testo.... qualcuno che conosce un pò anche XML potrebbe aiutarmi, grazie!
__________________
CPU Intel i5-4590, Scheda Madre Asrock H97 Pro4, RAM DDR3 Corsair Vengeance 1600MHz 8GB CL9, Hard Disk WD Caviar Blue 1TB, SSD Crucial MX100 256GB. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:03.