xerces c ++ getChildNodes getLength

时间:2015-03-06 13:13:42

标签: c++ xerces

我正在尝试使用xerces c ++解析XML字符串。

结构是

<root>
<optionA>
<optionB/>
</optionA>
</root>

我将xml字符串读入MemBufInputSource,然后解析它。

当我在root上调用getChildNodes()时,它总是返回2.它应该不是1吗?这里,只有选项A是root的子项。此外,对于每个孩子,我检查它是否是一个节点和类型元素。对于第一个孩子,检查总是错误的。

为什么显示2个孩子的数量?

1 个答案:

答案 0 :(得分:0)

getChildNodes()返回所有子节点,而不仅仅是元素节点。

元素之间的空格(本例中为新行)计为文本节点(DOMNode::NodeType::TEXT_NODE)。根据我的统计,你的例子中实际上有2个文本节点,所以整体上有3个子节点,但是在转录到问题时的差异,或者Xerces的不同配置可能导致原始代码中有2个子节点。

如果您将XML示例更改为一行中没有空格

<root><optionA><optionB/></optionA></root>

你可以看到Xerces会报告只有一个root的孩子。

以下是Xerces可能遇到的full list of node types