Rappresenta un file di testo come singola unità in Java e le stringhe corrispondenti nel testo
-
03-07-2019 - |
Domanda
Come posso avere un file di testo (o file XML) rappresentato come una stringa intera e cercare (o abbinare) una stringa particolare in essa?
Ho creato un oggetto BufferedReader:
BufferedReader input = new BufferedReader(new FileReader(aFile));
e poi ho provato a usare la classe Scanner con la sua opzione per specificare diversi delimitatori, come questo:
//Scanner scantext = new Scanner(input);
//Scanner scantext = new Scanner(input).useDelimiter("");
Scanner scantext = new Scanner(input).useDelimiter("\n");
while (scantext.hasNext()) { ... }
Usando la classe Scanner in questo modo posso leggere il testo riga per riga o parola per parola, ma non mi aiuta, perché a volte nel testo, che voglio elaborare, ho
</review><review>
e vorrei dire: se trovi " <review>
" in qualunque parte del testo, fai qualcosa con le seguenti righe (o parti di testo) seguenti fino a trovare " </review>
" ;. Il problema è che <=> e <=> si trovano in punti diversi del testo e talvolta incollati ad altro testo (quindi lo spazio vuoto come delimitatore non mi aiuta).
Ho pensato che avrei potuto usare l'API delle espressioni regolari in Java (le classi Pattern e Matcher), ma sembrano corrispondere a una particolare stringa o linea e voglio avere il testo come una stringa continua (almeno questo sono state le mie impressioni da quello che ho letto su di loro). Potresti dirmi quali strutture / metodi / classi dovrei usare in questo caso? Grazie.
Altri suggerimenti
Mi sembra che tu stia provando a lavorare con un file XML strutturato e ti suggerirei di esaminare javax.xml.parsers.DocumentBuilder o altro integrato API per analizzare il documento.
Usa un parser XML.
Oppure usa xpath, come in questo esempio .
Ho pensato che avrei potuto usare l'API delle espressioni regolari in Java (le classi Pattern e Matcher), ma sembrano corrispondere a una particolare stringa o linea e voglio avere il testo come una stringa continua
Uhm, qualcosa ti impedisce di leggere il file XML in una stringa e quindi di operare su quello, usando l'API delle espressioni regolari?
Puoi facilmente leggere un file in una stringa usando ad es. FileUtils da Apache Commons IO : vedi readFileToString(File file, String encoding)
.
Vorrei anche raccomandare di usare un'API di analisi XML ... Ma siccome vuoi fare qualcosa solo in " review " tag, forse potresti usare SAX meglio di DOM ...
Penso che qui possiamo copiare una singola riga nel file di testo in una stringa e quindi provare a far corrispondere una sottostringa (stringa di ricerca) con la stringa (linea)
Ma l'errore produce durante l'esecuzione di metacaratteri come / o # ecc.