【问题标题】:std::string xml string to objectstd::string xml 字符串到对象
【发布时间】:2011-05-05 01:13:47
【问题描述】:

获取 std::string 类型的 XML 字符串并将其转换为内存中 XML 对象的最有效方法是什么,对象结构并不重要,我所追求的是我是否愿意需要逐个字符地遍历字符串并挑选出所有部分,或者是否有更简单的方法?

【问题讨论】:

    标签: c++ xml string xml-parsing


    【解决方案1】:

    最简单的方法可能是使用库来做到这一点。

    如果您想自己执行此操作,则需要解析包含 XML 代码的字符串。有很多方法可以做到这一点;最简单的可能是递归下降解析器。

    【讨论】:

    • “最有效”仍然是使用别人已经开发和调试过的库。
    • @peoro - 您需要解析包含 XML 代码的字符串 - 真的吗?许多 XML 库将获取一个字符串并将其转换为对象模型格式。 MSXML 会做到这一点,但它是一种药丸,因为它使用 COM 编程隐喻。您的基本观点是正确的,但我相信使用哪一个的建议也会很有用。
    • “如果你想自己做”我的意思是“如果你不想中继任何 XML 库”...
    • 谁能推荐一个图书馆?仅仅说“使用图书馆”并不是很有帮助。
    • @naspinski:TinyXML 是一个不错的库,但您会发现数以千计的 XML 库:许多框架提供处理 XML 文件的函数(例如:QtXML module)。另请查看其他答案。
    【解决方案2】:

    看看阿拉比卡:http://www.jezuk.co.uk/cgi-bin/view/arabica 在我知道的所有 XML 库/包装器中,它对标准最友好。

    【讨论】:

      【解决方案3】:

      试用 Expat,紧凑、用户友好且免费: http://expat.sourceforge.net/

      【讨论】:

        【解决方案4】:

        您可以为此使用MSXML,它将获取字符串并生成 DOM(文档对象模型)表示。文档还可以,但这不是最容易使用的库。当然只有 Windows。

        优点 - 可靠、广泛使用。 缺点 - 你必须在一定程度上学习 COM 编程模型。使用起来不是最直观的。

        更简单的选项是xerces。示例文件解析代码here,还有其他示例。我在不同的工作中都使用过这个和 MSXML。

        【讨论】:

        • @Tony - 我不怪你。我敢肯定,您不需要它来使用 Xerces 或许多其他工具。
        【解决方案5】:

        使用libxml2。不是一个高度复杂的库并且易于使用。可移植,用 C 语言编写,但可以绑定到其他语言,并且有大量示例可供使用和学习。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-09-04
          • 2012-07-30
          • 2017-01-26
          • 2012-10-28
          • 1970-01-01
          • 2011-06-04
          • 2017-06-06
          • 2012-10-12
          相关资源
          最近更新 更多