xerces介绍
Xerces-C++ 的前身是 IBM 的 XML4C 项目。XML4C 和 XML4J 是两个并列的项目,而 XML4J 是 Xerces-J——Java 实现——的前身。IBM 将这两个项目的源代码让与 Apache 软件基金会(Apache Software Foundation),他们将其分别改名为 Xerces-C++ 和 Xerces-J。这两个项目是 Apache XML 组的核心项目(如果看到的是“Xerces-C”而不是“Xerces-C++”,也是同一个东西,因为这个项目一开始就是用 C(译者注:原文为C++)语言编写的)。
IBM 仍然在 Xerces-C++ 的基础上继续 XML4C 项目。从我所研究的版本来看,XML4C 与 Xerces-C++ 相比突出的好处是,它的默认安装对大量国际字符编码提供了更好的支持
xerces-J的资料,可以参考网址http://xerces.apache.org/xerces-j/
xerces-c的资料,可以参考网址http://xerces.apache.org/xerces-c/
下面我们在linux上安装xerces-c
下载,安装
从http://xerces.apache.org/xerces-c/上下载linuxe/unix下的源程序包xerces-c-current.tar.gz,上传到linux/unix主机,我用的是linux,顺序执行如下操作:
解压,命令:tar -xzvf xerces-c-current.tar.gz
添加环境变量,vi .bash_profile,在文件最后添加如下一行
export XERCESCROOT=$HOME/xerces-c-src_2_7_0
保存退出,行source .basu_profile使环境变量生效
进入源程序目录
cd $XERCESCROOT/src/xercesc
执行automake,生成configure脚本,运行如下命令
autoconf
运行configure脚本,并加入选项
./runConfigure -plinux -cgcc -xg++ -minmem -nsocket -tnative -rpthread
编译生成lib库,如果上面的runConfigure运行没有什么问题,执行gmake
gmake
如果gmake没有出现错误,说明一切ok
编译示例程序
cd $XERCESCROOT/samples
./runConfigure -plinux -cgcc -xg++
gmake
cd $XERCESCROOT/bin
运行示例程序DOMCount,提示如下错误信息
./DOMCount: error while loading shared libraries: libxerces-c.so.27: cannot open shared object file: No such file or directory
根据提示得信息判断,这是程序你在运行得时候找不到共享库libxerces-c.so.27,显然,这是程序在执行得过程中,搜索路径不正确,看看上面得配置,在编译完xercescroot之后,没有设置和库路径相关得环境变量,只要将xercescroot的库路径添加到一个环境变量,这样程序在执行过程中,就能找到libxerces-c.so.27库了;如果出现找不到共享库的情况都可以通过修改环境变量来解决问题,该环境变量名为:LD_LIBRARY_PATH
添加环境变量,vi .bash_profile,在最后添加一行,如下:
export LD_LIBRARY_PATH=$XERCESCROOT/lib
保存退出,执行source .bash_profile,使环境变量生效
以上的每一步都要正确无误地执行之后,才能进行下一步
xerces-c和tuxedo结合的问题
由于tuxedo8.1以上的版本都内置了xerces-c,这样我们在开发tuxedo服务,并且用xerces-c包做解析的时候,由于你开发用的xerces版本和tuxedo内嵌的版本可能会不一样,一些符号的定义就会不一样了,这样在编译的时候会报一些阿莫名奇妙的错误,这时应该避免使用tuxedo自带的xerces头文件,把$TUXEDIR/include下的xercesc目录改名就可以了.
如果你在开发的时候用的xerces-c版本和tuxedo自带的xerces-c版本相同,就不会有问题,如果版本不同就得注意.
我建议,最好你开发得时候用什么版本,在tuxedo结合编译运行的时候,也用这个版本.
知道xerces的版本号
从xerces的xerces/util/XercesVersion.hpp文件中,根据XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR,XERCES_VERSION_REVISION可以得到主次,临时版本号。
早期的在Xerces_DLLVersionStr文件中定义
xerces-c++编程
后面我会进行补充.
如有问题,请留言,我们一起解决,总结经验.