Vooropgesteld; text parsen is sowieso niet mijn hobby en xml heeft z'n doel, maar 9 van de 10 keer als ik text wil (zoals config files) doen voldoet een simpele scanf / linebased format ook prima en heb ik geen zin om de complete dom api na te gaan pluizen op zoek naar wat ik wil hebben. Het is namelijk werkelijk een dagtaak om een xml document fatsoenlijk te traversen zodra je geen xpath lib hebt. Verder heeft 't geen native ondersteuning voor verschillende datatypes, is het verschil tussen een node attribuut en de context van de node enorm ambigue en stoor ik me lichtelijk aan de redundantie van de open en sluit tags. Het formaat op zichzelf is vrijwel compleet nutteloos zonder de omliggende specs (dom, xpath, xslt etc).
Een aantal jaar geleden had ik een prachtige xml + xslt oplossing gemaakt voor het opengl extensie probleem, de xml kwam van een third party die 't in z'n eigen formaat had geformat en ik wilde het zo goed mogelijk naar een c++ header file omzetten. Kortom, daar hebben we xslt voor; en daar ben ik een dag of twee/drie mee aan het klussen geweest en dat werkte vervolgens een aantal jaar goed. Nou zinde me het nooit zo dat ik een .net tool had, die een xml en xslt inlas en vervolgens een c++ header file uitspuugde; het is immers niet echt een platform onafhankelijke oplossing en op een dag hield de 3rd party er mee op z'n xml document up to date te houden.
Enfin, uiteindelijk bleek dat het xml document gegenereerd was uit een andere header file (

) en omdat ik m'n header in een specifiek formaat wilde hebben zat er niets anders op dan die betreffende header file zelf te parsen en om te zetten. Het schrijven van een tool die de header downloadde, door een recursive decendent parser haalde en een nieuwe header uitschreef koste me aanzienlijk minder tijd (halve dag vs. twee, drie dagen) dan het schrijven van het xslt document en het vechten met de destijd erg brakke .net xslt implementatie.
Verder, en dit is geheel persoonlijk, heb ik het niet zo op gigantische bureaucratisch opgestelde specs die uiteindelijk bijna geen inhoud hebben.