2011-01-26 3 views
3

Как можно прочитать следующий файл конфигурации на C++. Есть ли поддержка в STL. Я не могу позволить себе использовать другие сторонние библиотеки.Чтение конфигурации xml-файлов в C++

<?xml version="1.0" encoding="utf-8"?> 
<appSettings> 
    <add key="FileType" value="doc"/> 
    <add key="FileLength" value="102234"/> 
</appSettings> 

Я не пользуюсь управляемым C++.

+0

«Я не могу позволить себе использовать другие сторонние библиотеки» <- НЕПРАВИЛЬНО. Почему ты не можешь? – Arafangion

+5

Вам не нужно предоставлять библиотеку. Все они свободны. – DumbCoder

+6

Это противоположность для тех из нас, кто зарабатывает на жизнь: мы не можем позволить себе использовать не сторонние библиотеки. – sbi

ответ

6

STL не поддерживает синтаксический анализ xml. Если вы решите не использовать стороннюю библиотеку, тогда ваш единственный вариант - написать парсер вручную, это кажется довольно плохой идеей. Почему именно вы не можете позволить себе использовать сторонние библиотеки?

+0

Ну, это академический проект, и использование сторонних библиотек запрещено :-( – devnull

+0

@iJeeves - Тогда напишите свой собственный парсер. Посмотрите библиотеку и начните копировать код с максимальной осторожностью. – DumbCoder

+0

Я вижу, я бы обжаловал это, если бы я были ли вы на том основании, что это то, что хорошо использовать сторонние плагины для. С другой стороны, насколько сложным является этот файл конфигурации? Если приведенный вами пример является фактическим конфигурационным файлом, тогда xml является добрым –

8

В этом случае я предлагаю использовать TinyXML. Это очень маленький XML-ридер, достаточно сложный для правильного анализа вашего цитированного XML-документа. Это всего лишь два или три исходных файла на C++, которые вы можете напрямую скомпилировать в свое приложение. Он не имеет внешних зависимостей, кроме стандартной библиотеки и STL.

+0

Большое спасибо за предложение TinyXml. Я использовал его в одном из моих проектов. – Searock

0

Это ссылка с аналогичной темы на StackOverflow
Using Boost to read and write XML files Который также рекомендую Крошку, как рекомендуется Frerich Рааб.

+0

Boost - это сторонняя библиотека, поэтому ваш ответ не будет очень полезен OP. – darioo

+0

@ darioo: Я думаю, Boost - это вторая партийная библиотека, так как она очень близка к C++ .. на самом деле так близко, что многие из ее методов включены в C++ 0x. : D – Nawaz