Фильтрация символов форматирования между последовательными тегами XML с помощью Xerces C ++ - PullRequest
0 голосов
/ 31 марта 2012

Буду признателен за указатели на то, как получить (неэлементный) текст между тегами.Например, учитывая элемент ABC, я хотел бы получить текст ABC.

В настоящее время я могу использовать DefaultHandler::(const XMLCh *const chars, const XMLSize_t length), чтобы получить символы между двумя последовательными начальными или конечными тегами.К сожалению, я получаю ненужные символы новой строки и места для форматирования.Между родительскими тегами и дочерними элементами.Например, в приведенном ниже фрагменте кода я получаю 5 дополнительных символов форматирования - одну новую строку и четыре пробела:

<Parent>               <!-- Newline here -->
    <Child>XYX</Child> <!-- Four spaces here -->
</Parent>

Каков наилучший (стандартный) способ фильтрации этих символов форматирования?

1 Ответ

0 голосов
/ 02 апреля 2012

решаемая. Ради потомков, вот как я это сделал.

  1. Поскольку нужные символы появляются между (последовательным началом и концом) тегами, которые определяют элемент, В методе DefaultHandler::startElement() я сохраняю локальное имя в начале элемента и сравниваю его со следующим `локальным именем встречается.

  2. Если следующее обнаруженное локальное имя принадлежит новому элементу, то промежуточные символы должны быть символами форматирования и должны игнорироваться.

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

...