Поддерживает ли RapidXML xml:space=preserve?

Я читаю файл XML, в котором у меня есть «текстовые узлы только для пробелов»:

<p>I <b>love</b> <i>Mozart</i>.</p>

В приведенном выше (упрощенном) примере есть пробел (один пробел) между конечным тегом и начальным тегом. Мне нужно сохранить это пространство.

При синтаксическом анализе в RapidXML я ТОЛЬКО указываю "parse_comment_nodes", поэтому я предполагаю, что "parse_trim_whitespace" и "parse_normalize_whitespace" НЕ действуют. Итак, я пытаюсь использовать синтаксис "xml:space":

<p xml:space="preserve">I <b>love</b> <i>Mozart</i>.</p>

... но похоже, что RapidXML этого не уважает. Когда я перебираю все одноуровневые узлы, я никогда не вижу узла со значением " ".

Я читал (и перечитывал) документацию и искал здесь, в StackOverflow, но до сих пор не понял, является ли это проблемой синтаксиса с моей стороны или проблемой RapidXML.


person SMGreenfield    schedule 04.09.2013    source источник
comment
После поиска в источниках RapidXML я не могу найти никаких ссылок ни на XML:space, ни на сохранение — я думаю, маловероятно, что эта функция поддерживается RapidXML.   -  person SMGreenfield    schedule 05.09.2013


Ответы (1)


Теперь я УВЕРЕН, что RapidXML 1.13 не поддерживает работу с текстовыми узлами, состоящими только из пробелов, с использованием атрибута xml:space="preserve". Я нашел ПАТЧ для этой самой проблемы на SourceForge:

Ссылка на исправление ошибки текстового узла RapidXML 1.13, состоящего только из пробелов

Этот патч исправляет проблему, когда RapidXML просто никогда не возвращает/пропускает допустимый узел, если он содержит только пробелы. Он НЕ позволяет использовать атрибут xml:space="preserve". Это был бы предпочтительный метод ВКЛЮЧЕНИЯ исправления. Возможно, кто-то, более знакомый с проектом RapidXML, сможет внести это изменение в будущем.

person SMGreenfield    schedule 05.09.2013