linux安装xml开发包xerces-c

  1. 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
  2. 下载,安装
    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,使环境变量生效
    以上的每一步都要正确无误地执行之后,才能进行下一步
  3. 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文件中定义
  4. xerces-c++编程
    后面我会进行补充.
    如有问题,请留言,我们一起解决,总结经验.
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
如果您的 Xerces-C 库在进行大文件校验时崩溃,可能是因为它尝试将整个文件加载到内存中进行处理,导致内存不足。为了解决这个问题,您可以使用 Xerces-C 的 SAX 接口来处理 XML 文件。SAX 接口允许您在处理 XML 文件时逐个节点处理,而不是将整个文件加载到内存中。 以下是使用 SAX 接口进行 XSD 校验的示例代码: ```c++ #include <iostream> #include <xercesc/sax/HandlerBase.hpp> #include <xercesc/parsers/XercesDOMParser.hpp> #include <xercesc/framework/LocalFileInputSource.hpp> #include <xercesc/framework/XMLValidator.hpp> #include <xercesc/util/XMLString.hpp> using namespace xercesc; class XSDValidator : public HandlerBase { public: void startElement( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attrs ) { // Add your validation logic here } }; int main() { XMLPlatformUtils::Initialize(); XercesDOMParser parser; parser.setValidationScheme(XercesDOMParser::Val_Always); parser.setDoNamespaces(true); XSDValidator handler; parser.setErrorHandler(&handler); parser.setDocumentHandler(&handler); LocalFileInputSource source(XMLString::transcode("your_file.xml")); parser.parse(source); XMLPlatformUtils::Terminate(); return 0; } ``` 在上面的示例中,我们使用 Xerces-C 的 SAX 接口来处理 XML 文件。我们创建了一个名为 `XSDValidator` 的处理程序,它实现了 `HandlerBase` 接口并重写了 `startElement` 方法来添加自己的验证逻辑。在 `main` 函数中,我们创建了一个 `XercesDOMParser` 对象,并将其配置为始终进行验证。然后,我们将 `XSDValidator` 处理程序分配给 `parser` 对象,并使用 `LocalFileInputSource` 对象来指定要验证的 XML 文件。最后,我们调用 `parse` 方法来开始解析文件。 请注意,在上面的示例中,我们没有将整个文件加载到内存中。相反,我们使用 SAX 接口逐个节点处理 XML 文件,从而避免了内存不足的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值