Как анализировать XML-документ после первой проверки по DTD в VB6

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

  •  19-08-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top