2009-01-21 8 views
1

Je tente d'écrire un analyseur XML dans VB6.
Les normes sur lesquelles repose le XML sont accompagnées d'une DTD pour vérifier le code XML avant de commencer l'analyse. J'ai également écrit un exemple de fichier XML afin que j'ai quelque chose à tester.Comment peut-on analyser un document XML après la première validation contre une DTD dans VB6

Je suis en mesure de charger le XML via le code VB6

Dim objXMLDoc As MSXML.DOMDocument 
Set objXMLDoc = New MSXML.DOMDocument 
If Not objXMLDoc.Load("sample.xml") Then 
----Goto ErrorHandler 
End If 

XML de travail

<?xml version = "1.0"?> 
<Root> 
... 
</Root> 

Essayer de valider avec ma DTD

<?xml version = "1.0"?> 
<!DOCTYPE sample SYSTEM "sample.dtd"> 
<Root> 
... 
</Root> 

La recherche que je ne me conduis croire que le chargement validerait le XML si le XML pointait vers la DTD via le type doc.
J'ai fait beaucoup de recherches et je n'arrive pas à comprendre où je me trompe. Cela pourrait être aussi simple que la DTD fournie n'est pas syntaxiquement correcte, ce que je regarde maintenant. Les ressources que j'ai trouvées sont principalement sur MSDN et ici http://www.jalix.org/ressources/internet/dom/~vrac/articles/XML%20DOM.html.
Tant le xml et dtd sont situés dans le même répertoire, et je l'ai analyse XML avec la balise DOCTYPE.

L'erreur que j'obtiens est:
Erreur #: -2146697211: Le système ne peut pas localiser la ressource spécifiée. ressources de traitement d'erreur « sample.dtd »

Toutes les ressources supplémentaires ou des suggestions serait grandement apprécié.

Répondre

1

Je ne peux pas reproduire votre erreur. Cela fonctionne très bien avec les deux fichiers dans le même dossier pour moi.

Il n'y a pas un problème de la DTD ne pas être bien formé soit; cela jette une autre erreur. J'obtiens la même erreur que toi si elle ne trouve pas la DTD, alors que j'obtiens l'erreur -1072896757 ("Caractère invalide trouvé dans la DTD.") Si elle trouve ma DTD (totalement bidon).

Avez-vous essayé d'utiliser un autre Microsoft XML version ou êtes-vous attaché à l'ancienne version 2.0 ? Essayez v6.0 si possible.

+0

Je suis malheureusement attaché à la version 2.0 en raison de code de pré-existante Je garderai en jouant avec ça maintenant que je sais que je suis au moins sur la bonne voie, merci d'avoir jeté un coup d'œil Mercator –

+0

Merci pour votre aide, j'ai finalement eu le temps de jouer à nouveau avec ça. (moi-même et quelques fautes de frappe clés), une DTD malformée qui m'a été donnée, et un manque de connaissances dans ce domaine, je tournais en rond, j'ai corrigé un travail maintenant, merci –

+0

Merci! – mercator

0

une suggestion évidente, mais avez-vous essayé pleinement qualifier le nom du fichier DTD (c.-à-c:. \ Blahblah ... \ sample.dtd