【问题标题】:xerces c++ getChildNodes getLengthxerces c++ getChildNodes getLength
【发布时间】:2015-03-06 13:13:41
【问题描述】:

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

结构是

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

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

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

为什么显示有 2 个孩子?

【问题讨论】:

    标签: c++ xerces


    【解决方案1】:

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

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

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

    &lt;root&gt;&lt;optionA&gt;&lt;optionB/&gt;&lt;/optionA&gt;&lt;/root&gt;

    您可以看到 Xerces 然后会报告 root 只有一个孩子。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      • 2013-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      相关资源
      最近更新 更多