чтение XML-файла в программе на C++
Я пытаюсь прочитать XML-файл в моей программе на C++. XML-файл выглядит примерно так:
<?xml version="1.0" encoding="utf-8"?>
<myprogram>
<configuration>
<window>
<height> 300 </height>
<width> 500 </width>
</window>
</configuration>
</myprogram>
прямо сейчас я могу посмотреть на XML-файл и попытаться прочитать его так:
ifstream in("mydata.xml");
//ignore the <?xml line
in.ignore(200, 'n');
//i know that the first value i want is the window height so i can ignore <myprogram> <configuration> and <window>
//ignore <myprogram>
in.ignore(200, 'n');
//ignore <configuration>
in.ignore(200, 'n');
//ignore <window>
in.ignore(200, 'n');
string s; int height;
//okay, now i have my height
in >> s >> height;
В общем, это кажется плохой идеей, и это действительно ограничивает, как XML-файл может быть изменен. Вышеприведенное решение очень ручное, и если что-то в XML изменится, кажется, что весь метод чтения должен быть изменен.
есть ли лучший способ этого?
5 ответов
вы можете использовать некоторую библиотеку, которая сделает это за вас. Если вы работаете на платформе Windows, вы можете использовать MSXML который уже является частью системы.
проверить этот вопрос: чтение записи XML-файла в C++
в мультиплатформенном источнике я обычно использую Qt XML reader.
У вас есть 3 способа читать:
- Qt core QXmlStreamReader - Qt способ чтения XML
- SAX2 читатель - стандартный читатель SAX2 с содержание обращения класс
- DOM reader - DOM чтения документов с узлами XML
Если вы пишете только программное обеспечение Windows, вы должны использовать MSXML 6. Начиная с Windows XP Пакет обновления 3 MSXML 6.0 является частью ОС.
в Linux вы должны использовать библиотеки libxml2.