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
我正在尝试使用 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