Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 16

Помогите разобраться с xerces

30.07.2011, 13:41. Показов 2990. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Допустим у меня есть файл index.html. Как открыть, его и получить объект DOM-дерева?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.07.2011, 13:41
Ответы с готовыми решениями:

Помогите разобраться с шаблонами
Пытаюсь реализовать новую для себя методику "службы класса". Все хорошо работало, пока не возникла необходимость в качестве клиента слжбы...

Помогите разобраться с классом
Мне нужно создать класс который в свою очередь должен обращаться к разным компонентам формы. Так вот: как в него передать указатель на...

Помогите разобраться с программкой
Помогите разобраться с данной программкой, что она делает, как она работает, очень при очень нужно знать. long func(long x) { ...

6
2 / 2 / 0
Регистрация: 21.11.2009
Сообщений: 26
04.08.2011, 12:54
Для начала нужно скачать саму библиотеку и подключить её(прописать путь к инклуду для xerces и для .lib, ну и неплохо бы в path добавить путь к dll xerces'а). Потом для проверки запускаем следущее.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <xercesc/util/PlatformUtils.hpp>
// Other include files, declarations, and non-Xerces-C++ initializations.
#pragma comment(lib,"C:\\Code\\Clibs\\xerces-c-3.1.1-x86-windows-vc-9.0\\lib\\xerces-c_3.lib")//можно либо так либо прописать пути к либам в проекте, у тебя свой путь, не забывай 
using namespace xercesc;
 
int main(int argc, char* argv[])
{
  try {
    XMLPlatformUtils::Initialize();
  }
  catch (const XMLException& toCatch) {
    // Do your failure processing here
    return 1;
  }
 
  // Do your actual work with Xerces-C++ here.
 
  XMLPlatformUtils::Terminate();
 
  // Other terminations and cleanup.
  return 0;
}
Если компилится без проблем то можешь радовать библиотека подключена.

Ну а вот те пример самого использования




C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "stdafx.h"
 
#include <xercesc/util/PlatformUtils.hpp>
#include <xercesc/parsers/XercesDOMParser.hpp>
#include <xercesc/dom/DOM.hpp>
#include <xercesc/util/XMLString.hpp>
#include <xercesc/util/PlatformUtils.hpp>
#include <xercesc/sax/HandlerBase.hpp>
#include <xercesc/util/XMLString.hpp>
//#include <winuser.h>
 
// Other include files, declarations, and non-Xerces-C++ initializations.
#pragma comment(lib,"C:\\Code\\Clibs\\xerces-c-3.1.1-x86-windows-vc-9.0\\lib\\xerces-c_3.lib")
 
#define XERCES_STATIC_LIBRARY
 
using namespace xercesc;
using namespace std;
int main(int argc, char* argv[])
    {
    try {
        XMLPlatformUtils::Initialize();
        }
    catch (const XMLException& toCatch) {
        // Do your failure processing here
        return 1;
        }
    XMLCh xmlFile[50];
    XMLString::transcode("C:/test6.xml", xmlFile, 49);//!важно что xerces использует собственный тип для строк
    XercesDOMParser* parser = new XercesDOMParser();//создание парсера
    parser->setDoNamespaces(true);
    ErrorHandler* errHandler = (ErrorHandler*) new HandlerBase();
    parser->setErrorHandler(errHandler);
    parser->parse(xmlFile);//собственно парсинг файла
    DOMDocument* doc = parser->getDocument();//получение главного элемента документа
    
        //дальше как фантазия работает(смотри [URL="http://xerces.apache.org/xerces-c/apiDocs-3/index.html"]api[/URL])
        XMLCh globalName[20];
    XMLString::transcode("global",globalName,19);
    DOMNodeList* globalList =doc->getElementsByTagName(globalName);//получение всех элементов <global>, заметь не массив а именно Объект  DOMNodeList
 
    string str = "Количество элементов global ";
 
    cout<<str<<globalList->getLength()<<"\n";//вывод количества элементов <global>
 
 
    
 
    XMLPlatformUtils::Terminate();
    // Other terminations and cleanup.
    return 0;
    }
я api xerces'а знаю чуть ли не наизусть))
1
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 16
04.08.2011, 13:43  [ТС]
То есть
C
1
2
 int _tmain(int argc, _TCHAR* argv[])
{
писать нельзя?
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
04.08.2011, 15:22
Если не знаешь, что значит _t* и _T*, то нельзя.
0
2 / 2 / 0
Регистрация: 21.11.2009
Сообщений: 26
04.08.2011, 16:08
можно конечно, на твою прогу в принципе это повлиять не должно
1
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 16
05.08.2011, 13:26  [ТС]
У меня возникает необработанное исключение в этих строках:
C++
1
2
parser->parse(xmlFile);//собственно парсинг файла
        DOMDocument* doc = parser->getDocument();//получение главного элемента документа
0
2 / 2 / 0
Регистрация: 21.11.2009
Сообщений: 26
08.08.2011, 15:07
Во первых проверь путь к файлу. А во вторых если ты парсишь HTML то лучше вообще перейти на другую библиотеку. Потому что xerces в основном предназначен для xml и его расширений и не знает что к примеру тэг <br>(перенос строки) в стандарте HTML не требует завершающего тэга. Поэтому он пытается найти закрывающий тэг </br> - не находит его и выдает исключение. Решение к примеру можно записывать все одинарные тэги в виде <br /> либо как я уже сказал переходить на другую библиотеку))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.08.2011, 15:07
Помогаю со студенческими работами здесь

Помогите разобраться с OnClose()
Помогите разобраться! При написании функции OnClose() куда идет сообщение при закрытии окна? где в MFC находится DefWindowProc? Как...

Помогите разобраться с MFC
Никак не могу разобраться с MFC. Выложите пожалуйста, проект, сделанный в vs 2008 с визуальным конструктором, в котором текстбокс и одна...

Помогите разобраться с классами начинающему
я хочу сделать такую 'штуку', чтобы при нажатии мышкой на статический текст или например картинку, а также при перемещении по нему мышки...

Помогите разобраться с динамическими библиотеками
Здравсвуйте форумчане... т.к я еще молод и зелен прошу помочь тех кто разбирается в динамических библиотеках: что такое есть билиотека( у...

Помогите разобраться (код не нужен)
Всем доброго времени суток. Нам препод задал делать работу, но так как я новичок и на С++ пересел с паскаля появилось не много проблем. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru