Stellvertretend für eine Textdatei als einzelne Einheit in Java, und Strings im Text enthalten

StackOverflow https://stackoverflow.com/questions/821583

Frage

Wie kann ich eine Textdatei (oder XML-Datei) als Ganzes Zeichenfolge dargestellt, und die Suche nach (oder Spiel), um eine bestimmte Zeichenfolge in dem?

Ich habe ein BufferedReader-Objekt erstellt:

BufferedReader input =  new BufferedReader(new FileReader(aFile));

und dann habe ich versucht, die Scanner-Klasse mit der Option zu verwenden, um verschiedene Trennzeichen festlegen, wie folgt aus:

//Scanner scantext = new Scanner(input);
//Scanner scantext = new Scanner(input).useDelimiter("");
Scanner scantext = new Scanner(input).useDelimiter("\n");
while (scantext.hasNext()) {  ... }

, um die Scanner-Klasse verwenden wie diese kann ich entweder den Text Zeile für Zeile lesen oder Wort für Wort, aber es hilft mir nicht, denn manchmal im Text, die ich verarbeiten will, muß ich

</review><review>

und ich mag sagen: Wenn Sie „<review>“ irgendwo im Text, etwas zu tun mit den folgenden nächsten Zeilen (oder ein Stück Text) finden, bis Sie „</review>“ finden. Das Problem ist, dass <review> und </review> an verschiedenen Stellen im Text ist, und manchmal zu anderem Text geklebt (daher der leere Raum als Trennzeichen hilft mir nicht).

Ich habe gedacht, dass ich die regulären Ausdruck API in Java verwenden könnte (die Klassen Pattern und Matcher), aber sie scheinen eine bestimmte Zeichenfolge oder Zeile zu passen, und ich mag den Text als eine kontinuierliche Folge hat (zumindest in dieser war meine Eindrücke von dem, was ich über sie gelesen haben). Können Sie mir sagen, welche Strukturen / Methoden / Klassen I in diesem Fall verwendet werden soll? Danke.

War es hilfreich?

Lösung

Versuchen Sie nicht, XML mit regulären Ausdrücken zu analysieren; es führt nur zu Schmerz. Es gibt eine Menge von sehr schön bestehend XML APIs in Java bereits; warum versuchen, sie neu zu erfinden?

Wie auch immer, für eine Zeichenfolge in einer Textdatei zu suchen, sollten Sie:

  1. Laden Sie die Datei als String ( Beispiel )
  2. Erstellen Sie eine Pattern für
  3. suchen
  4. Verwenden Sie einen Matcher iteriert durch alle Matches

Andere Tipps

Es scheint mir, als ob Sie versuchen, mit einem strukturierten XML-Datei zu arbeiten, und würde vorschlagen, dass Sie a href Blick in <= "http://java.sun.com/j2se/1.4.2/docs/ api / javax / xml / Parser / DocumentBuilder.html "rel = "nofollow noreferrer"> javax.xml.parsers.DocumentBuilder oder andere gebaut in APIs um das Dokument zu analysieren.

Verwenden Sie einen XML-Parser.

oder benutzen XPath, wie in diesem Beispiel .

  

Ich habe gedacht, dass ich den regulären Ausdruck API in Java verwenden könnten (die Klassen Pattern und Matcher), aber sie scheinen eine bestimmte Zeichenfolge oder Zeile zu passen, und ich möchte den Text als eine kontinuierliche Folge haben

Um, tut etwas verhindern, dass Sie sich beim Lesen der XML-Datei in einen String, und dann auf dem Betrieb, den regulären Ausdruck API?

Sie können ganz einfach eine Datei in einen String lesen unter Verwendung von z FileUtils von Apache Commons IO : siehe readFileToString(File file, String encoding) .

Ich würde auch empfehlen, ein XML-Parsing-API ... Aber wie Sie nur etwas bei „Überprüfung“ Tag machen wollen, vielleicht könnten Sie SAX besser als DOM ...

Ich denke hier, wir einzelne Zeilen in der Textdatei in einen String kopieren und dann versuchen, einen Teil (Suchtext) mit der Zeichenfolge (Linie) entsprechen

Aber Fehler erzeugt, während Executing Metazeichen wie / oder # etc ..

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top