Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

использование libxml2 в VC

32K
23 ноября 2007 года
julia_k
5 / / 22.11.2007
Парсинг XML-документа с DTD
помогите начинающему в следующей задаче (VC++6):

имеется xml документ, по нему надо составить dtd-файл и осуществить валидацию xml по dtd, использую libxml2.

парсить только xml-документ - ошибок нет, с dtd - много проблем
1. если его открывать как файл, то возращается ошибка - пустой документ
xmlDtdPtr dtd;
dtd = xmlParseDTD(NULL,(const xmlChar*)"test.dtd");

2. если его открывать как ссылку из самого xml, то выдает ошибку no declaration for element....
xmlDocPtr doc;
doc = xmlReadFile("test.xml", NULL, 0);
dtd = xmlGetIntSubset(doc);

3. если запись dtd определить как строку в памяти, а потом ее направить в парсер, то все работает для маленьких и простых документов
const char *mem = "<?xml version='1.0' encoding='UTF-8'?> \
<!ELEMENT ECHO-DOCUMENT (Patient?,ToneAudiograms)> \"
buf = xmlParserInputBufferCreateStatic (mem, strlen(mem),XML_CHAR_ENCODING_ASCII);
if (buf == NULL)
{ g_print("Fatal error creating dtd buffer.\n");}
dtd = xmlIOParseDTD (NULL, buf, XML_CHAR_ENCODING_ASCII);
if(dtd == NULL)
{ g_print("Dtd parse failed.\n");}

если усложнить документ xml и dtd , то начинают лезть ошибки... проверяют эти файлы в Altova XMLSpy - они правильные, ошибок нет
кто-нибудь решал подобные задачи? как открыть внешний dtd, а не тянуть его программно? и как избавиться от ошибок, которых вроде нет, но они есть?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог