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

在 Linux 或 macOS 上安装 Xerces-C++ 主要靠包管理器或源码编译;Windows 下推荐用 vcpkg 或预编译二进制。使用时需链接库、包含头文件,并注意初始化与内存管理。
Linux/macOS:用包管理器快速安装
- 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
源码编译(跨平台通用,适合定制)
从 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 OKn"; 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 目录下的例子起步,逐步替换自己的逻辑。