【问题标题】:read_xml() throw exception due to lacking of double quotesread_xml() 由于缺少双引号而引发异常
【发布时间】:2012-05-15 03:29:00
【问题描述】:

我使用 boost::property_tree 对象来解析 xml,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<root>
    <node attr="attr_str"/>
</root>

当我调用 read_xml() 来解析这个内容时,它运行良好。但是,如果我像这样删除 attr 属性周围的那些双引号:

<?xml version="1.0" encoding="utf-8"?>
<root>
    <node attr=attr_str/>
</root>

它抛出 xml_parse_error 异常。

是否可以设置任何标志来忽略对双引号的检查?

【问题讨论】:

  • attr 的值周围没有双引号的文档不是有效的 XML。为什么你期望(并且想要)一个 XML 解析器来解析无效的 XML?
  • 我知道你的意思。但是我的项目已经有一些带有这些乱七八糟的东西的 xml 文件,所以我试图让我的解析器与它们兼容。

标签: xml boost boost-propertytree


【解决方案1】:

XML 属性必须被引用:

http://www.w3schools.com/xml/xml_attributes.asp

您将需要包含这些引号 - 否则它是无效标记。

【讨论】:

  • 感谢您的链接。它摇摆不定。
  • 通常在 stackoverflow 上您会接受答案,因此社区可以从这些问题/答案中受益;)
【解决方案2】:

XML 哲学的一个重要组成部分是,确保内容正确的责任在于生产者而不是消费者。这是因为生成正确的 XML 比修复错误的 XML 更容易也更便宜。阅读 XML 的人比编写它的人多得多。如果您发现自己被那些不了解这种对质量态度的人所生成的 XML(或者更确切地说是非 XML)所困扰,那么您就会遇到一个棘手的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    相关资源
    最近更新 更多