使用xercesc准备xsd文件时出错
Error preparsing a xsd file with xercesc
我正试图用xerces-c准备一个xsd文件,以便在多线程应用程序中使用GrammarPool。问题是我正确地准备了xsd(没有错误处理程序的通知),但当我解析一个有效的xml文件(通过在线验证器检查是否有效)时,解析失败,告诉我属性和元素尚未声明。现在我将向您展示我准备文件的代码。
XMLGrammarPool gp = new XMLGrammarPoolImpl (XMLPlatformUtils::fgMemoryManager);
XercesDOMParser* parser = new XercesDOMParser(0, XMLPlatformUtils::fgMemoryManager, gp);
parser->cacheGrammarFromParse(true);
error_handler eh;
parser->setErrorHandler(&eh);
parser->setDoSchema(true);
parser->setDoNamespaces(true);
if(!parser->loadGrammar("file.xsd", Grammar::SchemaGrammarType, true) || eh.failed()){
delete gp;
XMLPlatformUtils::Terminate();
return -6;
}
gp->lockPool();
这是为了解析xml文件:
XercesDOMParser *parser = new XercesDOMParser(0, XMLPlatformUtils::fgMemoryManager, gp);
error_handler eh;
parser->setErrorHandler(&eh);
parser->setValidationSchemaFullChecking(true);
parser->setIgnoreAnnotations(true);
parser->setCreateCommentNodes(false);
parser->useCachedGrammarInParse(true);
parser->setValidationScheme(AbstractDOMParser::ValSchemes::Val_Always);
MemBufInputSource buf((const XMLByte*)xml_file, size, "xml_file in memory");
parser->parse(buf);
if(eh.failed()){
delete parser;
return;
}
请帮忙!
博客条目
基于Xerces-C++的多线程XML解析
解释了如何在多线程应用程序中重用缓存的模式。该博客名为《设计感》,作者是Boris Kolpackov。
我还建议查看这个公共域C++文件(也是由同一作者)
http://scm.codesynthesis.com/?p=xsd/xsd.git;a=斑点;f=示例/ccxx/tree/performance/parsing.cxx;hb=头
它向我们展示了如何让Xerces解析一次模式,然后读取许多XML文件。实现的某些部分与CodeSynthesis XSD有关,因此您需要对其进行一些修改。
相关文章:
- 读取文件的最后一行并输入到链接列表时出错
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- .h 和.cpp文件分离时出错,但仅使用 .h 文件时没有错误.我做错了什么?
- 在 C/C++ 中打开驻留在 "/sys/" 下的文件时出错
- 在头文件中定义变量不会出错
- 如何在多写入器情况下对文件支持的共享内存中的大页面出错
- JNI,使用两个 .so 文件时出错,其中一个文件需要另一个文件
- 生成文件中隐式规则中的 -c 标志出错
- 编译时出错 - 链接.cpp和头文件
- 从人员矢量插入和读取文件时出错
- LNK2019 在文件中调用静态成员的方法时出错.cpp
- ./main:加载共享库时出错:libopencv_highgui.so.4.0:无法打开共享对象文件:没有这样的文件或
- 猫鼬 - 包含标准C++库文件时出错
- 在f2c.h文件中定义min()max()宏时出错
- ASIOSDK;从hostsample.cpp生成mex文件时出错
- 使用emscripten将c++文件转换为wasm时出错
- 将文本从一个文件复制到另一个c++流时出错
- 在C++目录中搜索文件的函数输出中出错
- 编译包含LLVM API标头的C++文件时出错
- MySQL C++连接器:添加符号时出错:文件格式无法识别