JAVA opslagprobleem

Moderators: jkien, Xilvo

Reageer
Berichten: 10

JAVA opslagprobleem

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
 
 
Bijlagen
WikiData.zip
(2.98 KiB) 91 keer gedownload
SPEL_DATA.TXT
(8 KiB) 64 keer gedownload

[De extensie htm is uitgeschakeld en kan niet langer worden weergegeven.]


Berichten: 7.068

Re: JAVA opslagprobleem

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).

Berichten: 10

Re: JAVA opslagprobleem

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

Berichten: 10

Re: JAVA opslagprobleem

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

Reageer