使用Xerces C++过滤连续XML标记之间的格式化字符



我很感激关于如何在标记之间获取(非元素)文本的指针。例如,给定元素ABC,我想得到文本ABC。

目前,我可以使用DefaultHandler::(const XMLCh *const chars, const XMLSize_t length)来获取两个连续的开始或结束标记之间的字符。不幸的是,我得到了不必要的换行符和格式化空格。在父标记和子元素之间。例如,在下面的代码中,我得到了5个额外的格式化字符——一个换行符和四个空格:

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

过滤掉这些格式化字符的最佳(标准)方法是什么?

已解决。为了子孙后代,以下是我的做法。

  1. 由于所需字符出现在定义元素的(连续的开始和结束)标记之间,因此在方法DefaultHandler::startElement()中,我将本地名称存储在元素的开头,并将其与遇到的下一个"本地名称"进行比较。

  2. 如果遇到的下一个本地名称属于新元素,则插入的字符必须是格式化字符,应被忽略。

  3. 但是,如果遇到的下一个元素具有相同的本地名称,则插入的字符形成所需的字符串。

最新更新