Как анализировать XML-документ после первой проверки по DTD в VB6 - PullRequest
1 голос
/ 22 января 2009

Я пытаюсь написать анализатор XML в VB6.
Стандарты, на которых основан XML, поставляются с DTD для проверки XML перед началом анализа. Я также написал пример XML-файла, чтобы у меня было что проверить.

Я могу загрузить XML через код vb6

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

Рабочий XML

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

Попытка подтверждения с моим DTD

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

Исследование, которое я провел, заставило меня поверить, что Load подтвердит правильность XML, если XML будет указывать на DTD через тип документа.
Я провел много исследований и не могу понять, где я иду не так. Это может быть так же просто, как предоставленный DTD не является синтаксически правильным, который я сейчас просматриваю Ресурсы, которые я нашел, в основном на MSDN и здесь http://www.jalix.org/ressources/internet/dom/~vrac/articles/XML%20DOM.html.
И xml, и dtd находятся в одном и том же каталоге, и я проанализировал XML без тега doctype.

Я получаю ошибку:
Ошибка №: -2146697211: система не может найти указанный ресурс. ресурс обработки ошибок 'sample.dtd'

Будем весьма благодарны за любые дополнительные ресурсы или предложения.

Ответы [ 2 ]

1 голос
/ 22 января 2009

Я не могу воспроизвести вашу ошибку. Он прекрасно работает с обоими файлами в одной папке для меня.

Это не проблема того, что DTD не является правильно сформированным; это бросает другую ошибку. Я получаю ту же ошибку, что и вы, если не могу найти DTD, а я получаю ошибку -1072896757 («В DTD найден недопустимый символ»), если он находит мое (полностью поддельное) DTD.

Вы пытались использовать другую версию Microsoft XML или вы привязаны к старой версии 2.0 ? Попробуйте v6.0 , если возможно.

0 голосов
/ 23 января 2009

очевидное предположение, но вы пытались полностью указать имя файла dtd (т.е. c: \ blahblah ... \ sample.dtd?

...