2009-07-24 27 views
1

У меня есть файл XML, который выглядит следующим образомlibxml для C++: как добавить корневой узел в дерево XML?

<siteinfo> 
... 
</siteinfo> 
<page> 
    <title>...</title> 
    <revision> 
    ... 
    <revision> 
</page> 

Это не имеет/закрывающий корневой узел, так что я получаю «дополнительное содержание в конце документа» о запуске моей программы. После открытия файла для разбора с использованием libxml существует ли способ легко добавить этот корневой/охватывающий узел в дерево разбора?

+0

Можно ли изменить запись XML? Я думаю, что будет лучше сделать его совместимым с XML. –

ответ

3

Если вы не можете изменить структуру исходного XML, проще всего было бы создать строку, как:

string xml = string("<root>") + file_contents + string("</root>"); 

Затем вы можете разобрать эту строку легко. Кстати, поскольку вы используете C++, вам следует попробовать libxml ++. Это C++-оболочка для libxml, и это очень хорошо.

+0

Спасибо. Таким образом, можно разбирать строку, а не файл? Если да, то ваш ответ - именно то, что мне нужно :-) –

+0

Это возможно с libxml ++, поэтому, очевидно, это должно быть возможно с libxml, который является базовой библиотекой. – Sahas

+0

Спасибо! Я думал, что использую libxml ++. Очевидно нет. Мне пришлось установить столько пакетов, я потерял трек. Будет придерживаться libxml2, пока я не найду libxml ++ намного проще ;-). Еще раз спасибо. –

Смежные вопросы