【问题标题】:C++ Expat and XML parsingC++ Expat 和 XML 解析
【发布时间】:2011-08-30 00:31:46
【问题描述】:

我是使用外籍人士的新手。我试图弄清楚 XML_SetUserData 打算如何做。在我的例子中,我有一个 A 类对象的列表,我需要在解析 XML 流时填充这个列表。

到目前为止,我计划使用单例来表示这个单例。 XML_SetUserData 是否可以消除我的列表成为单例的需要?

【问题讨论】:

    标签: c++ xml expat-parser


    【解决方案1】:

    是的,确实如此。只需将 XML_SetUserData 传递给任何结构或类保持必要状态的指针,然后从处理程序内部的 (void*) 将其转换回。

    一个有用的技巧是定义一个带有静态回调成员函数的基类,将调用从 expat 转发到虚拟成员函数。在这种情况下,XML_SetUserData 提供了一种方便的机制来将this 指针传递给静态回调。

    【讨论】:

    • 除了消除全局之外还有什么优势吗?我仍然需要跟踪我的数据结构中正在解析的“元素”,无论是全局的还是非全局的。对吗?
    • @reza:是的,您必须自己进行所有跟踪。我添加了一个常见的使用场景,它突出了一个额外的好处(尽管避免全局变量是以这种方式通过 API 传递用户数据的主要动机)。
    猜你喜欢
    • 2012-09-10
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 2022-11-09
    • 1970-01-01
    相关资源
    最近更新 更多