Converteer XML gratis online naar Tekst

Converteer XML bestanden gratis naar Tekst. Upload uw bestand en ontvang direct een schone, LLM-ready uitvoer. Geen aanmelding, 50 MB per bestand, niets opgeslagen.

XML naar tekst omzetten: de inhoud tussen de punthaken vandaan halen

Er is een bepaald soort bestand dat opduikt zodra je een tekstcorpus bouwt: een XML-export van iets dat echt interessant is — abstracts van wetenschappelijke artikelen, rechtbankverslagen, een gedigitaliseerd archief, tien jaar aan blogposts — waarbij het proza dat je zoekt begraven ligt onder een schema dat iemand in 2006 heeft ontworpen. De woorden zitten erin. Ze zijn alleen verpakt in drie lagen tags met namespace-prefixen eraan.

Deze pagina haalt die inhoud eruit en geeft je niets anders dan de tekst. Geen koppen, geen tabellen, geen opmaak van welke soort dan ook. Precies wat je wilt als de bestemming een embedding-model is, een zoekindex, een NLP-script of een pipeline die interpunctie als ruis behandelt. Upload hierboven een .xml-bestand — gratis, geen account nodig, limiet van 50 MB, er wordt niets bewaard.

Wat er aan de andere kant uitkomt

Extractie is meer dan alles tussen < en > weggooien. Een aantal dingen moet netjes afgehandeld worden, anders klopt de uitvoer op subtiele manieren niet:

  • Entity-referenties worden gedecodeerd. XML kan geen kaal ampersand bevatten, dus echte documenten staan vol met &amp;, &lt;, &quot; en numerieke vormen zoals &#8217; voor een gekrulde apostrof. Laat je ze staan, dan vervuilen ze woordtellingen en mislukken zoekopdrachten. Ze komen terug als de tekens waar ze voor staan.
  • CDATA-secties worden uitgepakt. <![CDATA[ ... ]]> is de manier waarop XML inhoud met markup naar binnen smokkelt — HTML in een RSS-description, een stukje SQL, een JavaScript-blok. De verpakking verdwijnt, de inhoud blijft.
  • Tekstnodes met alleen whitespace vervallen. Netjes ingesprongen XML heeft tussen elk paar tags een tekstnode die uit niets anders bestaat dan een regeleinde en wat spaties. Houd je die, dan bestaat je uitvoer voor 60% uit lege regels.
  • Elementnamen verdwijnen volledig. Anders dan bij de Markdown-variant blijven tagnamen hier niet als labels staan. Je krijgt de waarden, niet het schema.
  • Comments, de XML-declaratie, DTD's en processing instructions gaan eruit. Geen van alle zijn ze inhoud.

De aan-elkaar-plak-bug, en waarom die ertoe doet

Dit is de faalwijze waar de meeste naïeve tag-strippers op stuklopen, inclusief veel snelle regex-oplossingen die mensen van forums plakken. Neem mixed content — tekst en kindelementen door elkaar in dezelfde parent:

<p>Zie de <ref>bijlage</ref> voor details</p>

Strip je tags zonder na te denken, dan kun je eindigen met "Zie debijlagevoor details", want de tag die je weghaalde deed dienst als woordgrens. Ga je de andere kant op en zet je bij elke tag een regeleinde, dan krijg je een zin die in drie brokstukken over drie regels is gehakt. Geen van beide is bruikbaar: het eerste breekt tokenisatie, het tweede breekt zinssegmentatie, en allebei corrumperen ze stilletjes alles verderop in de keten dat ervan uitgaat dat het proza leest.

Een correcte aanpak houdt inline-elementen inline en breekt alleen regels op echte blokgrenzen. Gebruik je iets anders om tekst uit een XML-bestand te halen, dan is dit het eerste wat je moet testen — zoek een alinea met een inline-tag middenin en controleer of de zin het heeft overleefd.

Het configbestand-probleem

Dan nu de eerlijke kanttekening, want die bespaart je vijf verwarrende minuten. XML bewaart gegevens op twee plekken: tussen de tags, en in attributen erbinnen. Tekstextractie pakt per definitie de eerste soort. Sommige heel gangbare XML heeft daar bijna niets van.

Android-manifesten, .NET-app.config, Ant-buildbestanden, Spring-beandefinities, veel SVG's — die stoppen vrijwel alles in attributen. Haal er zo een door een tekstextractor en je krijgt een handjevol losse woorden terug, of een leeg bestand, en het lijkt alsof de tool gefaald heeft. Dat is niet zo; er was gewoon geen elementtekst te vinden.

Gebruik voor die bestanden de XML naar Markdown converter, die attributen laat staan bij de elementen waar ze bij horen. De formaat-schakelaar bovenaan deze pagina wisselt over en neemt je bestand mee, dus het is één klik in plaats van nog een upload. Vuistregel: proza zit in elementen, instellingen zitten in attributen. Tekstextractie is voor de eerste soort.

Wanneer platte tekst duidelijk de juiste keuze is

XML is het thuisformaat van een enorme hoeveelheid goed onderhouden tekst, vooral omdat instituties erop standaardiseerden voordat JSON bestond. In die erfenis verdient deze converter zijn plek:

  • Corpora bouwen. Dumps met academische abstracts, TEI-gecodeerde literaire teksten, parlementaire en juridische stukken, museum- en bibliotheekcatalogi. Allemaal rijk proza, allemaal verpakt in zware schema's. Jij wilt het proza.
  • Embeddings en vector search. Embed een ruwe XML-chunk en een flink deel van de resulterende vector beschrijft de markup in plaats van de betekenis — twee documenten over totaal verschillende onderwerpen kunnen dicht bij elkaar landen puur omdat ze een schema delen. Tags strippen geeft je embeddings over inhoud.
  • Chunking. Chunkers met vaste grootte snijden ruwe XML midden in een element door en leveren fragmenten met verweesde tags op. Platte tekst splitst op zins- en alineagrenzen, en daar is de chunker voor gemaakt.
  • Zoekindexering en tekstanalyse. Termfrequenties, sentimentanalyse, topic modelling, entity extraction — allemaal scheefgetrokken door structuurtokens die op elk record terugkomen.
  • Tokenbesparing. De breedsprakigheid van XML is zelfs onder gestructureerde formaten uitzonderlijk, want elke elementnaam staat er twee keer. Tags strippen uit een diep genest exportbestand verwijdert een berg tokens die nooit informatie droegen. De teller onder de uitvoer laat precies zien hoeveel.

Wanneer strippen juist de verkeerde zet is

Modellen kunnen prima met ruwe XML overweg — het is breedsprakig maar ondubbelzinnig, en er zit heel veel van in trainingsdata. Converteren is een keuze die je om een reden maakt, geen regel.

  • Code schrijven tegen het document. XPath-query's, een XSLT-stylesheet, een SAX- of DOM-parser, een schema. Die hebben allemaal exacte elementnamen, namespace-prefixen en het onderscheid tussen attribuut en element nodig. Tekstextractie verwijdert precies dat. Plak dan een fragment van het echte bestand.
  • De hiërarchie is het antwoord. Als de vraag is onder welke parent iets hangt — bij welke omgeving een instelling hoort, in welke sectie een clausule staat — dan vernietigt platslaan dat. Dat is werk voor Markdown.
  • Attribuut-zware documenten, zoals hierboven.

Veelgestelde vragen

Hoe zet ik een XML-bestand om naar tekst?

Sleep het .xml-bestand in de converter hierboven en de inhoud tussen de tags komt terug als gewoon proza — geen punthaken, geen namespace-prefixen, geen attributen. Downloaden kan als .txt. Gratis, geen account nodig, 50 MB per bestand, er wordt niets bewaard.

Decodeert het entities zoals &amp; en &lt;?

Ja, en dat is belangrijker dan het klinkt. XML kan geen kaal ampersand bevatten, dus documenten uit de praktijk zitten vol &amp;, &lt;, &quot; en numerieke character references. Een naïeve tag-strip-regex laat die allemaal letterlijk in de uitvoer staan. Echt parsen lost ze op naar de tekens waar ze voor staan.

Waarom niet gewoon alles tussen punthaken wegstrippen met een regex?

Omdat zowel CDATA-secties als attribuutwaarden tekens bevatten die op markup lijken maar het niet zijn. Een regex vreet vrolijk de inhoud van een <![CDATA[...]]>-blok met ingebedde HTML op, en kan een echte tag niet onderscheiden van een < die in een attribuutwaarde tussen aanhalingstekens staat. Parsen doet dat goed; patroonmatching doet het stilletjes fout.

Komen attribuutwaarden mee?

Je krijgt de elementtekst; attributen zijn metadata over het element, geen inhoud ervan. Dat is meestal juist — je wilt het abstract, niet de schemaversie. Waar het knelt zijn formaten die echte inhoud in attributen opslaan; ziet je uitvoer er dus mager uit, open dan de bron en kijk of de woorden die je zocht in <tag attr="..."> zitten.

Werkt dit ook op RSS-feeds en sitemaps?

Ja — allebei zijn ze XML en allebei converteren ze. Een RSS-feed geeft je titels, beschrijvingen en datums als leesbare tekst, wat een snelle manier is om uit een blogarchief een corpus te bouwen. Een sitemap geeft je een lijst URL's, en die is nuttiger als je hem ergens anders in pijpt dan als proza om te lezen.

Gerelateerde tools

Nog even over de XML die je indirect tegenkomt: .docx- en .epub-bestanden zijn onderhuids gezipte XML. Je kunt er een uitpakken en de interne markup hier invoeren, maar doe dat niet — die is doordrenkt met stijlruns en revisiemetadata die de tekst verdrinken. Gebruik Word naar tekst of EPUB naar tekst, die weten welke delen inhoud zijn. Voor markup die HTML is in plaats van XML is er HTML naar tekst, en voor dat andere grote formaat voor gestructureerde data JSON naar tekst. File2Txt accepteert alles wat ondersteund wordt, als je liever geen pagina kiest.

En als de XML in een repository staat — een POM-bestand, een build-descriptor, testfixtures — dan stript het los converteren hem van zijn context. Met de GitHub naar tekst converter, de GitLab converter en de lokale-mapconverter trek je de XML en de code die hem leest samen in één uitvoer, en dat is bijna altijd nuttiger. De gids voor het voorbereiden van bestanden voor LLM's behandelt het algemene geval.

Repo2Txt wordt gebouwd en onderhouden door v12hero, een onafhankelijke ontwikkelaar die privacy-first native en webapps maakt.