xerces-c++在linux/macos用apt或homebrew安装,windows推荐vcpkg;需链接库、包含头文件,并严格调用initialize/terminate及xmlstring::release。

在 Linux 或 macOS 上安装 Xerces-C++ 主要靠包管理器或源码编译;Windows 下推荐用 vcpkg 或预编译二进制。使用时需链接库、包含头文件,并注意初始化与内存管理。
Linux/macOS:用包管理器快速安装
Ubuntu/Debian 系统直接运行:
- sudo apt install libxerces-c-dev libxerces-c3.2(开发头文件 + 运行时库)
- macOS 用 Homebrew:brew install xerces-c
安装后头文件通常在 /usr/include/xercesc,库文件在 /usr/lib 或 /usr/local/lib。编译时加 -lxerces-c 链接。
Windows:用 vcpkg 管理最省心
vcpkg 是微软推荐的 C++ 库管理工具,自动处理依赖和构建:
立即学习“C++免费学习笔记(深入)”;
- 先安装 vcpkg,然后执行:vcpkg install xerces-c:x64-windows(或 x86-windows)
- 集成到 Visual Studio:vcpkg integrate install
- CMake 项目可加 -DCMAKE_TOOLCHAIN_FILE=[vcpkg-root]/scripts/buildsystems/vcpkg.cmake
这样就能直接 #include
95Shop可以免费下载使用,是一款仿醉品商城网店系统,内置SEO优化,具有模块丰富、管理简洁直观,操作易用等特点,系统功能完整,运行速度较快,采用ASP.NET(C#)技术开发,配合SQL Serve2000数据库存储数据,运行环境为微软ASP.NET 2.0。95Shop官方网站定期开发新功能和维护升级。可以放心使用! 安装运行方法 1、下载软件压缩包; 2、将下载的软件压缩包解压缩,得到we
源码编译(跨平台通用,适合定制)
从 Apache 官网下载源码(如 xerces-c-3.2.4.tar.gz),解压后:
- Linux/macOS:./configure --prefix=/usr/local && make && sudo make install
- Windows(MSVC):用 CMake GUI 或命令行生成 VS 解决方案,再用 Visual Studio 编译 INSTALL 项目
注意开启 --enable-transcoder-iconv(Linux/macOS)或确保系统有 iconv 支持,否则中文解析可能出错。
简单 DOM 解析示例(验证是否可用)
写个最小可运行代码测试环境是否就绪:
#include <xercesc/parsers/XercesDOMParser.hpp>
#include <xercesc/dom/DOM.hpp>
#include <xercesc/util/XMLString.hpp>
#include <iostream>
<p>int main() {
try {
XMLPlatformUtils::Initialize(); // 必须先调用
XercesDOMParser parser;
parser.parse("test.xml"); // 确保该文件存在且格式正确
std::cout << "Parse OK\n";
XMLPlatformUtils::Terminate(); // 必须最后调用
} catch (const XMLException& e) {
char* msg = XMLString::transcode(e.getMessage());
std::cerr << "Error: " << msg << std::endl;
XMLString::release(&msg);
}
return 0;
}
编译命令(Linux 示例):
g++ -o parse parse.cpp -lxerces-c -I/usr/include/xercesc
常见坑和注意事项
Xerces-C++ 行为严谨但容易踩坑:
- 必须成对调用 XMLPlatformUtils::Initialize() 和 Terminate(),否则程序崩溃或内存泄漏
- 所有由 Xerces 分配的字符串(如 XMLString::transcode 返回的)必须用 XMLString::release 释放
- 默认不支持 UTF-8 BOM,含 BOM 的 XML 文件需提前去掉,或用 MemBufInputSource 手动跳过
- 多线程下每个线程应有自己的 XercesDOMParser 实例,或确保全局初始化已同步完成
不复杂但容易忽略细节,建议从官方 samples 目录下的例子起步,逐步替换自己的逻辑。









