【问题标题】:Does RapidXML support xml:space="preserve"?RapidXML 是否支持 xml:space="preserve"?
【发布时间】:2013-09-08 08:56:04
【问题描述】:

我正在读取一个 XML 文件,其中有“纯空白文本节点”:

<p>I <b>love</b> <i>Mozart</i>.</p>

在上面的(简化的)示例中,结束标记和开始标记之间有空格(单个空格)。我需要保留那个空间。

在 RapidXML 中解析时,我只指定“parse_comment_nodes”,所以我假设“parse_trim_whitespace”和“parse_normalize_whitespace”无效。所以我尝试使用“xml:space”语法:

<p xml:space="preserve">I <b>love</b> <i>Mozart</i>.</p>

...但 RapidXML 似乎不尊重这一点。当我遍历所有兄弟节点时,我从来没有看到一个值为“”的节点。

我一直在阅读(并重新阅读)文档,并在 StackOverflow 上搜索,但到目前为止还没有弄清楚这是我的语法问题还是 RapidXML 问题。

【问题讨论】:

  • 在 RapidXML 源中搜索后,我找不到任何对“XML:space”或“preserve”的引用——我认为 RapidXML 不太可能支持此功能。

标签: c++ xml xml-parsing rapidxml


【解决方案1】:

现在我很肯定 RapidXML 1.13 不支持使用 xml:space="preserve" 属性处理纯空白文本节点。我在 SourceForge 上为这个问题找到了一个补丁:

Link to patch for RapidXML 1.13 whitespace-only text node bug

此补丁纠正了 RapidXML 的问题,即当它只包含空格时,它根本不会返回/跳过有效节点。它不支持使用 xml:space="preserve" 属性。这将是启用错误修复的更可取的方法。也许更熟悉 RapidXML 项目的人可以在未来做出这种改变。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    相关资源
    最近更新 更多