xerces c++ getChildNodes getLength

xerces c++ getChildNodes getLength

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

结构为

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

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

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

为什么显示2children?

getChildNodes() returns 所有 child 节点,而不仅仅是作为元素的节点。

元素之间的空白(本例中为新行)算作一个文本节点 (DOMNode::NodeType::TEXT_NODE)。根据我的计算,您的示例中实际上有 2 个文本节点,因此总体上有 3 child 个节点,尽管在转录到问题时存在差异,或者 Xerces 的不同配置可能导致原始文件中有 2 child 个节点代码。

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

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

可以看到Xerces会报root中只有一个child。

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