65.9K
CodeProject 正在变化。 阅读更多。
Home

XML 文件/流处理

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.50/5 (11投票s)

2004年3月15日

2分钟阅读

viewsIcon

156512

downloadIcon

8085

处理 XML 文件或流;读取组和属性值;写入和删除组、属性、值和注释

Sample Image

引言

此 DLL 提供了操作 XML 文件的例程。 提供的集合并非包罗万象,而是一个有用的小集合。 多个协同运行的可执行文件可以从一个共同的 XML 文件中获取其操作参数并为其他文件设置参数。

背景

最初,实现了读取函数以节省使用专有接口的大量开销。 从此产生了对该机制的某种理解。 然后添加了写入和删除例程;允许用户程序提供和恢复 XML 数据的流例程(无需使用磁盘文件);一些超级(即,总括)例程以缩小用户的代码。

Using the Code

VC 6.0 项目:将 XMJDLL.dll 放在您的路径变量中的一个目录中。 将库 XMJDLL.lib 添加到项目资源。 将模块 XMJcalls.h 添加到项目中。 使用其中的例程。

VB 6.0 项目:使用 regsvr32 注册 XMJDLL.dll。 将模块 XMJDLL.bas 添加到项目中。 使用其中的 public 例程。

//
// Sample source to produce the above file
//
  XMJ_newFile("Order");

  XMJ_getFrstGroup("Order",0);
  XMJ_newAttPutVal("number","1234");

  XMJ_pokeNewGrpPutVal("Date","2000/1/1");
  XMJ_newGrpPutVal("Customer","Acme Ltd");
  XMJ_newAttPutVal("ID","1234A");

  XMJ_getFrstGroup("Order",0);
  XMJ_newGroup("ITEM");
  XMJ_getFrstGroup("ITEM",1);
  XMJ_newAttPutVal("ID","01");
  XMJ_newGrpPutVal("Part-number","E16-25A");
  XMJ_newAttPutVal("warehouse","Warehouse11");
  XMJ_getFrstGroup("ITEM",1);
  XMJ_pokeNewGrpPutVal("Description","Production-Class Widget A");
  XMJ_newGrpPutVal("Quantity","16");

  XMJ_getFrstGroup("Order",0);
  XMJ_newGroup("ITEM");
  XMJ_getLastGroup("ITEM",1);
  XMJ_newAttPutVal("ID","02");
  XMJ_newGrpPutVal("Part-number","E23-45B");
  XMJ_newAttPutVal("warehouse","Warehouse11");
  XMJ_getLastGroup("ITEM",1);
  XMJ_pokeNewGrpPutVal("Description","Production-Class Widget B");
  XMJ_newGrpPutVal("Quantity","12");

  XMJ_writeFile(fileName);

关注点

  • 对于仅 C/C++ 用户,可以使用提供的 workspace 和项目文件构建一个 static 库。
  • XMJDLL.bas 模块中的 private 例程是为了解决 C/C++ <-> VB 的差异。
  • false” 的实现(C/C++ 0,VB -1)。
  • VB string 地址到 C/C++ 例程。
  • VB 返回-string-参数在 DLL 中处理。

历史

  • 3.5 修正 XMJ_deProfundis
  • 3.4 加密和赶上 XM8
    • 新的 XMJ_crypt_vb.zip - TEA 加密应用于 XML 文件的演示
    • 四个新的加密例程,以实现 Tiny Encryption Algorithm (TEA)
    • XMJ_sNew.cpp - 新的循环例程 XMJ_deProfundis
    • 处理值中的 <、&、>、“ 和 ';读取和写入均可
  • 组到属性,属性到属性,空格处理
  • 以前需要 440 毫秒,现在需要 160 毫秒

许可证

本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。

作者可能使用的许可证列表可以在此处找到。

© . All rights reserved.