Загрузка атрибута XML с несколькими значениями в разные ячейки таблицы - PullRequest
1 голос
/ 21 февраля 2012

Скажем, у меня есть XML-файл, подобный следующему:

<holidays>
    <holiday1 val="New Years, 01/01, First half"/>
    <holiday2 val="Chirstmas, 12/25, Second half"/>
    <holiday3 val="Valentines Day, 02/14, First half"/>
<holidays>

И у меня есть таблица со следующими заголовками, в которую мне нужно загрузить данные из XML-файла:

Holiday Name        First Half  Second Half

(я понимаю, что заголовки таблиц на самом деле не являются кодом, но я отформатировал их с помощью блока кода, чтобы их было легче читать)

В общем, я хочу, чтобы элемент имел атрибут "Первая половина "(года между прочим), затем загрузите название праздника под названием праздника, а дату под первой половиной.если элемент имеет атрибут «вторая половина», тогда загрузите название праздника под именем праздника, но загрузите дату под второй половиной.В итоге все должно выглядеть примерно так:

Holiday Name        First Half  Second Half
New Years           01/01
Chirstmas                       12/25
Valentines Day      02/14

Я думал об использовании Xpath для первой проверки первой или второй половины, и используя эту информацию, выберите правильные ячейки для загрузки данных.Однако моя самая большая проблема в том, что я не знаю, как выбрать только дату или название праздника.

некоторая справочная информация:
- формат файла xml изменить нельзя, это былодано мне таким образом, и если абсолютно невозможно добиться того, что я хочу сделать, формат изменить нельзя
- я использую tinyxml в качестве анализатора
- я делаю это в C ++
-Я действительно знаю, как загрузить значение элемента в ячейку таблицы, поэтому у меня есть немного базовых знаний об этом

Спасибо заранее.Если вам потребуется дополнительная информация, чтобы помочь вам понять мою проблему, пожалуйста, оставьте комментарий.

1 Ответ

0 голосов
/ 21 февраля 2012

Вам нужно будет прикусить пулю и разобрать строку атрибута вручную. Вам нужно будет искать «Первый тайм» или «Второй тайм» вручную, посмотреть, есть ли он, и если это так, сделать что-то на основе этого. Вам придется разделить каждое из 3-х значений, разделенных запятыми, в атрибуте и работать с ними.

Я бы предложил некоторую форму синтаксического анализа регулярных выражений для таких простых случаев. Или, может быть, даже std::string::find будет работать; это зависит от ваших потребностей.

...