1 van 1
JAVA opslagprobleem
Geplaatst: di 11 sep 2018, 12:31
door jschut62
Ik heb een html-bestand met uitdrukkingen en gezegdes.
Bij elke uitdrukking/gezegde staat een korte omschrijving ervan.
Ik wil dit html-bestand om zetten naar een tekstbestand(JSON-formaat)
Hiervoor heb ik een parser in Java ontwikkeld.
Dit tekstbestand wil ik weer als input gebruiken voor een app.
De tags en vreemde tekens worden eruit gefilterd of omgezet in andere geldige tekens.
Voorbeeld:
Input:
<dd><b>De hete aardappel doorschuiven.</b></dd>
<dd><small>Een vervelende beslissing aan een ander overlaten.</small></dd>
</dl>
</dd>
</dl>
<dl>
<dd>
<dl>
Output:
{"V":"U","A":"DE HETE AARDAPPEL DOORSCHUIVEN.","O":"Een vervelende beslissing aan een ander overlaten."},
Het probleem is dat niet alle regels worden omgezet.
Alles wat na
<dd><b>Armslag krijgen.</b></dd>
<dd><small>Meer mogelijkheden krijgen.</small></dd>
</dl>
</dd>
</dl>
komt, wordt niet opgeslagen.
De code is op zich niet zo spannend, maar ik zie denk ik iets over het hoofd.
Het lijkt erop dat bij het opslaan niet goed gaat.
Graag hulp hierbij.
bvd, Johan Schut
Re: JAVA opslagprobleem
Geplaatst: di 11 sep 2018, 16:13
door EvilBro
Heb je al met een debugger door de code heen gelopen? Je doet namelijk nogal wat aannames over hoe de input eruit ziet, maar als ik van wiki de pagina download dan ziet het er nogal anders uit (bij mij staat </small></dd> bijvoorbeeld niet altijd aan het einde van de regel).
Re: JAVA opslagprobleem
Geplaatst: di 11 sep 2018, 18:34
door jschut62
Ik heb dit onderwerp nu in de juiste subforum "programmeren" geplaatst, maar nu ook met het juiste html-bestand. Sorry had vanmiddag even haast.
Het klopt dat </small></dd> niet altijd op het einde van de regel staat.
In het onderstaande voorbeeld staat ook geen </small></dd> op het eind van de derde regel, maar deze wordt ook goed omgezet.
Dan worden de regels aan elkaar geplakt.
<dd><small>Vertrekken als de situatie te bedreigend of te moeilijk wordt.<br>
(Afgeleid van het trompetsignaal of hoornsignaal, waarmee men een legeronderdeel het bevel tot terugtrekken placht te geven.)</small></dd>
worden elkaar geplakt. Daarna worden de tags eraf gehaald.
Waar ik wel vanuit ga is dat de uitdrukking(antwoord en omschrijving) begint met <dd><b> en eindigt met </dl>
Dat uitdrukking(antwoord) begint met <dd><b> en eindigt met omschrijving begint met </b></dd>.
Dat omschrijving begint met <dd><small> maar pas echt eindigt op </dl>
Omschrijving kan bestaan uit :
<dd><small> .................. </small></d
of
<dd><small> ....... </small></d
<dd><small> ....... </small></d
<dd><small> ............<br>
................. </small></d
Voorbeeld:
Input:
<dd><b>De aftocht blazen.</b></dd>
<dd><small>Vertrekken als de situatie te bedreigend of te moeilijk wordt.<br>
(Afgeleid van het trompetsignaal of hoornsignaal, waarmee men een legeronderdeel het bevel tot terugtrekken placht te geven.)</small></dd>
</dl>
</dd>
</dl>
Output:
{"V":"U","A":"DE AFTOCHT BLAZEN.","O":"Vertrekken als de situatie te bedreigend of te moeilijk wordt. (Afgeleid van het trompetsignaal of hoornsignaal, waarmee men een legeronderdeel het bevel tot terugtrekken placht te geven. )"},
In ieder geval bedankt dat je er naar gekeken hebt.
Mijn excuses voor het verkeerde html-bestand.
Met vriendelijke groeten, Johan Schut uit Den Bosch
Re: JAVA opslagprobleem
Geplaatst: wo 12 sep 2018, 11:36
door jschut62
Het probleem is denk ik gevonden.
Ik heb het html-bestand net zolang verkleind totdat ik de uitdrukking gevonden had waarbij het eigenlijk misgaat.
Het loopt mis bij de uitdrukking:
<dl>
<dd>
<dl>
<dd><b>Boter aan de galg zijn.</b></dd>
<dd><small>Niet zinvol zijn, zonder resultaat zijn. "Daar is hy
verslingert geraakt op een wilde losse meid, die piep jong en
Gereformeert is; en of ik kyf en of ik knor, 't is boter aan den galg."
B. Wolff en A. Deken, <i>Sara Burgerhart</i>.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2">[2]</a></sup></small></dd>
</dl>
</dd>
</dl>
<dl>
<dd>
<dl>
Het programma blijft in de onderstaande loop hangen:
//Verwijder tag <a href
String help;
while (helpOmschrijving.contains("<a href='"))
{ help = helpOmschrijving.substring(0, helpOmschrijving.indexOf("<a href='"));
if (helpOmschrijving.contains(">")) helpOmschrijving = help + helpOmschrijving.substring(helpOmschrijving.indexOf(">")+1)
}
De <a href wordt niet verwijderd waardoor die in een loop komt en blijft hangen.
Mvg, Johan Schut