Mandible Skrevet 11. mai 2004 Del Skrevet 11. mai 2004 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()? Lenke til kommentar
Frank2004 Skrevet 11. mai 2004 Del Skrevet 11. mai 2004 Sett på java.io.StreamTokenizer? Lenke til kommentar
Mandible Skrevet 11. mai 2004 Forfatter Del Skrevet 11. mai 2004 Hmm, finner ikke helt det jeg er ute etter. Hvilken metode? Forslag til kode? Lenke til kommentar
Rolf_OLE Skrevet 11. mai 2004 Del Skrevet 11. mai 2004 (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 11. mai 2004 av Rolf_OLE Lenke til kommentar
MailMan13 Skrevet 11. mai 2004 Del Skrevet 11. mai 2004 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(); } Lenke til kommentar
Frank2004 Skrevet 11. mai 2004 Del Skrevet 11. mai 2004 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? Lenke til kommentar
Flapz Skrevet 12. mai 2004 Del Skrevet 12. mai 2004 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!!! Lenke til kommentar
Flapz Skrevet 12. mai 2004 Del Skrevet 12. mai 2004 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!! Lenke til kommentar
hogamaster Skrevet 29. juni 2004 Del Skrevet 29. juni 2004 sjekk ut htmlparser på htmlparser.sf.net se på wiki eksemplene. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå