Domanda

Sto tentando di scrivere un parser XML in VB6.
Gli standard su cui si basa l'XML vengono forniti con un DTD per verificare l'XML prima di iniziare l'analisi. Ho anche scritto un file XML di esempio in modo da avere qualcosa con cui testare.

Sono in grado di caricare l'XML tramite il codice vb6

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

XML funzionante

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

Sto cercando di convalidare con il mio DTD

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

La ricerca che ho condotto mi ha portato a credere che il Load avrebbe convalidato l'XML se l'XML avesse puntato al DTD tramite il tipo di documento.
Ho fatto molte ricerche e non riesco a capire dove sbaglio. Potrebbe essere semplice in quanto il DTD fornito non è sintatticamente corretto, che sto esaminando ora. Le risorse che ho trovato sono principalmente su MSDN e qui http://www.jalix.org/ressources/internet/dom/~vrac/articles/XML%20DOM.html .
Sia xml che dtd si trovano nella stessa directory e ho analizzato l'XML senza il tag doctype.

L'errore che ottengo è:
Errore n .: -2146697211: il sistema non è in grado di individuare la risorsa specificata. errore durante l'elaborazione della risorsa "sample.dtd"

Qualsiasi ulteriore risorsa o suggerimento sarebbe molto apprezzato.

È stato utile?

Soluzione

Non riesco a riprodurre il tuo errore. Funziona bene con entrambi i file nella stessa cartella per me.

Non è nemmeno un problema che il DTD non sia ben formato; che genera un altro errore. Ottengo lo stesso errore di te se non riesco a trovare il DTD, mentre ottengo l'errore -1072896757 (" Carattere non valido trovato in DTD. & Quot;) se trova il mio (totalmente falso) DTD.

Hai provato a utilizzare una versione Microsoft XML diversa o sei legato alla vecchia versione 2.0 ? Prova v6.0 se possibile.

Altri suggerimenti

un suggerimento ovvio, ma hai provato a qualificare completamente il nome del file dtd (ovvero c: \ blahblah ... \ sample.dtd?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top