Como um analisar um documento XML após a primeira validação contra um DTD no VB6

StackOverflow https://stackoverflow.com/questions/467180

  •  19-08-2019
  •  | 
  •  

Pergunta

Estou tentando escrever um analisador XML no VB6.
Os padrões que o XML é baseado vem com um DTD para verificar o XML antes de começar a analisar. Também escrevi um arquivo XML de amostra para ter algo com o qual testar.

Sou capaz de carregar o XML através do código VB6

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

Trabalhando XML

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

Tentando validar com meu dtd

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

A pesquisa que eu me levou a acreditar que a carga validaria o XML se o XML apontasse para o DTD através do tipo de documento.
Eu fiz muita pesquisa e não consigo descobrir onde estou dando errado. Pode ser tão simples quanto o DTD fornecido não é sintaticamente correto, o que estou olhando agora. Os recursos que encontrei são principalmente no MSDN e aqui http://www.jalix.org/ressources/internet/dom/~vrac/articles/xml%20dom.html.
Tanto o XML quanto o DTD estão localizados no mesmo diretório, e eu o analisa o XML sem a tag Doctype.

O erro que recebo é:
Erro #: -2146697211: O sistema não pode localizar o resouce especificado. Recurso de processamento de erros 'amostra.dtd'

Quaisquer recursos adicionais ou sugestões seriam muito apreciados.

Foi útil?

Solução

Não posso reproduzir seu erro. Funciona bem com os dois arquivos na mesma pasta para mim.

Também não é um problema de o DTD não ser bem formado; Isso lança outro erro. Eu recebo o mesmo erro que você, se ele não conseguir encontrar o DTD, enquanto eu recebo erro -1072896757 ("Personagem inválido encontrado em DTD.") Se encontrar meu DTD (totalmente falso).

Você já tentou usar um diferente Microsoft XML versão, ou você está ligado ao antigo Versão 2.0? Tentar v6.0 se possível.

Outras dicas

Uma sugestão óbvia, mas você já tentou qualificar totalmente o nome do DTD (ou seja, c: blahblah ... sample.dtd?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top