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

时间:2012-03-31 15:46:25

标签: c++ xml xerces

我很欣赏有关如何在标签之间获取(非元素)文本的指示。例如,给定元素ABC,我想获得文本ABC。

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

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

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

1 个答案:

答案 0 :(得分:0)

解决。为了后人的缘故,我就是这样做的。

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

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

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