Gå til innhold

Fjerne HTML-tagger i en tekstfil


Anbefalte innlegg

Skrevet

Skal lese inn en fil ord for ord, men ønsker å utelate alt som befinner seg mellom < og >. Finnes det noen metode i java som gjør dette enkelt? F. eks. tilsvarende php's strip_tags()?

Videoannonse
Annonse
Skrevet (endret)

Høres ut som en veldig enkel metode hadde vært å bruke en HTML parser NekoHTML.

Så kan man bare gå igjennom alle tagsene og skrive ut tekst-innholdet mellom dem.

---- Rettelse---

Kom til å tenke på at jeg prøvde å bruke den parseren selv, og det var ikke mye lett å hente tekst ut ifra den :)

 

Alternativ to altså, vanlig XML parser, .

Xerces. Problemet med den er at den ikke godtar all mulig ukorrekt HTML (eg <br> uten </br> osv).

her er no kode jeg slengte opp iløpet av 5 min. NB, utestet og ikke mye pen! :)

public void JegKjederMegAltforMye_Part2(String whereIsJooAtLittleFile) throws IOException, JDOMException
{
 java.io.File theFile = new File(whereIsJooAtLittleFile);
 org.jdom.Document theDocument = new org.jdom.input.SAXBuilder().build(theFile);
 
 org.jdom.Element rootElement = theDocument.getRootElement();
 
 printOutText(rootElement);
}

private void printOutText(org.jdom.Element theElementHandled)
{
 System.out.println(theElementHandled.getText());
 java.util.List elementChildren = theElementHandled.getChildren();
 for (int childNr = 0; childNr < elementChildren.size(); childNr++)
 {
 	org.jdom.Element childElement = (org.jdom.Element) elementChildren.get(childNr);
 	printOutText(childElement);
 }
}

Endret av Rolf_OLE
Skrevet

Det er jo ikke verre enn å iterere gjennom strengen og finne start og slutttegn for tags da:

 /* Ikke testet, men det skal ikke være langt unna: */

String stripTags(String s) {
   StringBuffer buf = new StringBuffer();
   boolean b = false;
   for(int i=0;i<s.length();i++) {
       if(s.charAt(i)=='<') {
           b=false;
           continue;
       }
       if(s.charAt(i)=='>') {
           b=true;
           continue;
       }
       if(b)
           buf.append(s.charAt(i));
   }
   return buf.toString();
}

Skrevet

Heh.. Overså kanskje ordet 'enkelt' når jeg tipset om StreamTokenizer; pain å bruke imo.

 

Hvis det går greit å lese filen linje for linje, i.e. det ikke finnes tags som går over flere linjer, kan du prøve mailman's kode, eller fikse noe selv med String.split() eller StringTokenizer.

Hvis ikke kan det bli bra å skrive en decorator for InputStream(Reader?) som fungerer som mailman's kode?

Skrevet

Hvis du legger alt i en vector først!

Gjør deretter følgende:

Gå igjennom vectoren med en for løkke og

vec.elementAt(i).toString().toLowerCase().replaceAll("<","");

 

Tilsvarende for >!!

 

Har ikke testet dette!!!

Skrevet

Ok! Jeg la merke til at det var snakk om å utelukke alt imellom taggene, jeg misforstod litt!! Det gikk litt fort og jeg trodde det var snakk om å fjerne taggene!!

  • 2 uker senere...
  • 1 måned senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...