如何将私有数据附加到 libxml2 或 gdome dom 树
how to attach private data to libxml2 or gdome dom tree
我想使用 libxml2 或 gdome API 将一些私有数据(void*)挂在 DOM 树中的节点上。 浏览(相当稀疏的)api 文档,似乎 libxml2 节点可能有一个用户数据的成员(_private,几乎在每个对象上),但我没有看到任何 api 调用来操纵它。
由于 xmlNode 是一个结构,您可以直接访问void* _private
成员。
xmlNode * ePtr = ...;
ePtr->_private = ...;
但是我找不到任何文档说该字段用于自定义用户数据。所以我会避免这种方法。
相反,我会使用一个单独的元数据存储,就像std::map<xmlNode*, void*>
一样。 (我会使用比void*
更安全的东西,但希望你明白这个想法)
我看到的最大问题(在这两种情况下)是您需要注意您关联的元数据的生存期。我看不出有什么办法收到节点被破坏的通知......这可能会导致各种麻烦。
文档说 对于用户数据,libxml 不会涉及它_private
,但我的记忆是它适用于 libxml2 语言绑定之类的东西(例如 xmlwrapp 为此目的使用它),而不是用于用户代码。
相关文章:
- 使用 libxml2 解析 XML 文件时缺少元素值
- 无法避免的libxml2内存泄漏是由于尝试清理时崩溃造成的
- 如何在 GNUMakefile 上包含 libxml2 库
- CMake 无法在 CLion 中链接 libxml2
- 无法使用 libxml2 处理 xpath 查询
- 用libxml2中的https解析页面
- 漂亮的打印与libxml2
- 如何在CPP中添加XMLXPathRegistern(Libxml2)中的多个名称空间
- libxml2的cmake find_package不返回有效的标头目录
- cmake cannot find LibXml2
- 如何使用libxml2从C 中的XML文件中检索节点和特定元素字符串而不使用XPATH
- 用libxml2缩进合并的XML文件
- 如何使用XPath使用libxml2从C 中的XML文件中检索节点和特定元素字符串
- 使用静态 c 运行时库构建 libxml2
- libxml2 in C++,如何设置编码
- 用libxml2解析XML文件的最快方法
- 无法使用 libxml2 和 xpath 获取节点
- 使用libxml2 sax解析器获取价值错误
- libxml2 xmlsetGenericErrorFunc在过程中使用
- 如何将私有数据附加到 libxml2 或 gdome dom 树