我正在尝试使用xerces c ++解析XML字符串。
结构是
<root>
<optionA>
<optionB/>
</optionA>
</root>
我将xml字符串读入MemBufInputSource,然后解析它。
当我在root上调用getChildNodes()时,它总是返回2.它应该不是1吗?这里,只有选项A是root的子项。此外,对于每个孩子,我检查它是否是一个节点和类型元素。对于第一个孩子,检查总是错误的。
为什么显示2个孩子的数量?
答案 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。