Xerces-c: 用xsd文件c++验证XML文件
我正在尝试使用Xerces-c.我有一个.XSD方案,并希望使用它来验证XML文件.我已经定义了XSD文件和错误处理程序,但是由于某种原因,XSD没有丢弃错误.对我可能缺少的东西有任何见解吗? XercesDOMParser* parser = new XercesDOMParser(); parser->setExternalNoNamespaceSchemaLocation("parser.xsd"); parser->setExitOnFirstFatalError(true); parser->setValidationConstraintFatal(true); parser->setValidationScheme(XercesDOMParser::Val_Auto); parser->setDoNamespaces(true); parser->setDoSchema(true);
6 2023-12-24
编程技术问答社区
Xerces-C用硬编码的xsd验证xml
我正在编写一个库,该库获取XML文件并解析它们.为了防止用户将inalid XML馈送到我的应用程序中,我正在使用XERCES通过XSD验证XML文件. 但是,我仅设法对XSD文件进行验证.从理论上讲,用户可以打开此文件并弄乱它.这就是为什么我希望我的XSD在库中进行硬编码. 不幸的是,我还没有找到一种使用Xercesc ++的方法. 这就是现在的工作方式... bool XmlParser::validateXml(std::string a_XsdFilename) { xercesc::XercesDOMParser domParser; if (domParser.loadGrammar(a_XsdFilename.c_str(), xercesc::Grammar::SchemaGrammarType) == NULL) { throw Exceptions::Parser::XmlSchemaNotReadab
0 2023-12-24
编程技术问答社区
Xerces-C中的XPath支持
我支持使用XERCES-C进行XML解析的Legacy C ++应用程序.我被.NET宠坏了,并且习惯于使用XPath从DOM树中选择节点. 有什么方法可以在Xerces-C中获得一些有限的XPATH功能?我正在寻找SelectNodes("/for/bar/baz")之类的东西.我可以手动执行此操作,但是相比之下,XPath真是太好了. 解决方案 请参阅Xerces常见问题. http://xerces.apache.org/xerces-c/faq-other-2.html#faq-9 xerces-c ++是否支持xpath? No.XERCES-C ++ 2.8.0和XERCES-C ++ 3.0.1仅在处理模式身份约束时具有部分XPATH实现.为了获得完整的XPath支持,您可以参考Apache Xalan C ++或其他开源项目(例如Pathan). 使用Xalan做您想做的事很容易. 其他解决方案 这是用 Xerces 3.1.2 .
0 2023-12-23
编程技术问答社区
在用Xerces C++进行XML解析时整合模式元数据
我想解析XML文件,然后查找XML模式文件(.xsd)中属性和实体的数据类型. 我发现我可以使用Post Schema验证Infoset(PSVI)获取这些信息.为此,我应该能够通过GetFeature方法获得节点信息: info = (xercesc::DOMPSVITypeInfo*) domNode->getFeature(xercesc::XMLUni::fgXercesDOMHasPSVIInfo, xercesc::XMLUni::fgVersion1_1); 但是,我首先似乎必须启用此功能.由于解析器对象中没有setFeature方法,所以我尝试了" useimplentation",但这只是崩溃了我的程序. 在Xerces的文档中,对于PSVI来说非常稀疏,也许这里有人知道如何在使用Xercesdomparser解析XML文档时获取架构信息. 预先感谢! 解决方案 我找到了一个解决方案: //create parser static
0 2023-12-23
编程技术问答社区
C++ sax2解析器问题
我想解析XML文件.我的XML看起来像这样: tracker localhost:58303 The host and port that the MapReduce job tracker runs at. If "local", then jobs are run in-process as a single map and reduce task.
6 2023-12-22
编程技术问答社区
在Xerces-C中从DOMNode*到DOMElement*的传递
我有一个操纵XML的C ++应用程序. 好吧,在我的应用程序的某个时刻,我得到了一个domnode*,然后我小时候将其连接到元素. 问题是我想在该节点上添加参数...好吧,这是一个节点,所以它不是一个元素...只有元素具有参数... 这是我的代码: xercesc::DOMNode* node = 0; std::string xml = from_an_obj_of_mine.GetXml(); /* A string with xml inside, the xml is sure an element having something inside */ xercesc::MemBufInputSource xml_buf((const XMLByte*)xml.c_str(), xml.size(), "dummy"); xercesc::XercesDOMParser* parser = new xercesc::XercesDOMParser(); pars
2 2023-12-21
编程技术问答社区
Xerces-C: 从v2.x迁移到v3.x?
我想迁移一个项目(我不太熟悉的旧代码)从xerces-c v2.x到v3.x. 事实证明,Xerces-C V3丢弃了Dombuilder类. 迁移档案库告诉我这个: ...作为最终DOM级别3规范符合工作的一部分,替换了许多DOM接口(Dombuilder,Domwriter,Domerputsource等). 很好.但是,是否有有关如何迁移这些类别的代码的指南? ? 解决方案 替换删除API的替换: 使用XercesDOMParser或DOMLSParser代替DOMBuilder(更多信息) : xercesdomparser-> setCreateCommentNodes(true); 使用DOMLSSerializer而不是DOMWriter: domlsserializer* writer =(((domimimplementationl*)imp) - > createlsSerializer(); domConfigur
6 2023-12-21
编程技术问答社区
在Xerces C++中验证文件
我想在Xerces-c ++(版本2.8,Linux下)加载XML文档,并使用未从文档中引用的DTD模式进行验证.我尝试了以下内容: XercesDOMParser parser; parser.loadGrammar("grammar.dtd", Grammar::DTDGrammarType); parser.setValidationScheme(XercesDOMParser::Val_Always); parser.parse("xmlfile.xml"); ,但如果文档不有效,则不会指示错误.我想念什么? 解决方案 您需要Handler handler; parser.setErrorHandler( &handler ); hernler是从 erryhandler /p>
4 2023-12-21
编程技术问答社区
让Xerces解析一个字符串而不是一个文件
我知道如何使用xercesdomparser从XML文件创建完整的DOM: xercesc::XercesDOMParser parser = new xercesc::XercesDOMParser(); parser->parse(path_to_my_file); parser->getDocument(); // From here on I can access all nodes and do whatever i want 好吧,这有效...但是,如果我想解析字符串怎么办?像 std::string myxml = "..."; xercesc::XercesDOMParser parser = new xercesc::XercesDOMParser(); parser->parse(myxml); parser->getDocument(); // From here on I can access all nodes and
2 2023-12-21
编程技术问答社区
在C++中读写XML文件
我对如何读写(更新)C ++中的一个.xml文件进行了很多研究,但我无法为其开发代码. 我工作并安装了Xerces-C库,我认为需要使用DOM或SAX2解析器来阅读它. 请有人可以帮助编写代码. 这样做的示例代码将非常有帮助. 谢谢,最好的问候 Adarsh Sharma 解决方案 我推荐MSXML.它看起来可能很复杂,但是当您习惯它时,它很容易. 这是一个样本: input.xml: FL FR RL RR 代码: #include #include
2 2023-12-21
编程技术问答社区
Xerces-c和跨平台的字符串字元
我正在移植一个使用XERCES-C进行XML处理的代码库,从Windows/VC ++到Linux/G ++. 在Windows上,Xerces-c使用wchar_t作为字符类型XmlCh.这使人们可以使用std::wstring和L""语法的字符串文字. linux/g ++,wchar_t是32位,xerces-c使用unsigned short int(16位)作为字符类型XmlCh. 我沿着这首歌开始: #ifdef _MSC_VER using u16char_t = wchar_t; using u16string_t = std::wstring; #elif defined __linux using u16char_t = char16_t; using u16string_t = std::u16string; #endif 不幸的是,char16_t和unsigned short int不是等效的,它们的指针也不是隐式转换.因此,将u"H
14 2023-10-02
编程技术问答社区
使用xerces链接DLL时给出未定义的符号
我正在使用使用Xerces的Cygwin创建共享库/DLL.当我从主应用程序调用XERCEC函数时,一切都很好,但是当我尝试将某些代码放入库中时,我会为xerxesc定义的所有静态内容提供未定义的符号. 例如: std::string fromXMLString(XMLCh *oXMLString) { std::string result; xercesc::DOMImplementation *impl = xercesc::DOMImplementationRegistry::getDOMImplementation(X("Core")); char *temp = xercesc::XMLString::transcode(oXMLString); result = temp; xercesc::XMLString::release(&temp); return result; } 链接: g++ -sh
6 2023-09-01
编程技术问答社区
为什么在RHEL 8 / CentOS 8上无法安装PostGIS 3?
我试图在CentOS 8上安装最新的PostGis 3.0.x,没有运气. 我认为没有人在RHEL 8或CENTOS 8上运行Postgis,我不明白为什么不明白.似乎无法安装. 我通过禁用Rhel AppStream 成功安装了Postgres 12.0 步骤我在CentOS 8上安装了Postgres 12: 1) #dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm 2) #dnf --disablerepo AppStream install postgresql12 #dnf --disablerepo AppStream install postgresql12-server 我现在正在尝试安装PostGis. #dnf list --available
18 2023-05-16
编程技术问答社区
我如何安装XML::Xerces?
请参阅第 2 部分,其中列出了安装模块时的最新错误续帖. 通常,当我尝试使用标准 cpan 安装 XML::Xerces CPAN 模块时,安装 XML::Xercers 比经过一些处理后得到以下错误消息: XML-Xerces-2.7.0-0/samples/SEnumVal.pl ... XML-Xerces-2.7.0-0/postSource.pl XML-Xerces-2.7.0-0/xerces-headers.txt Removing previously used /home/adoshi/.cpan/build/XML-Xerces-2.7.0-0 CPAN.pm: Going to build J/JA/JASONS/XML-Xerces-2.7.0-0.tar.gz WARNING You have not defined any of the following environment variables: XERCESCROOT
190 2022-08-13
编程技术问答社区
从xerces v1迁移到xerces v3.1.1
我必须将我的项目从 xerces 1 迁移到 xerces 3.1.1,但我找不到 DOMString.hpp.有人知道我在哪里可以找到这门课吗? 解决方案 DOMString 是 gone.相反,Xerces API 为您提供了以 null 结尾的 XMLCh 字符串.
112 2022-08-13
编程技术问答社区
示例XSD失败,"错误:没有找到X元素的声明"
尽管在 xml 解析领域完全是新手,但我能够 xsd 创建有效的 c++ 并成功编译和链接,但编译器优化(?)消除了实例化.所以,从第一步开始,我尝试 hello世界 CodeSynthesis 中的xml 示例.但这失败了: [wally@lenovotower xml]$ make hello xsdcxx cxx-tree hello.xsd g++ -c -o helloschema.o hello.cxx g++ -g -o hello -lxerces-c helloschema.o hello.c++ [wally@lenovotower xml]$ ./hello hello.xml:2:8 error: no declaration found for element 'hello' hello.xml:4:13 error: no declaration found for element 'greeting' hello.xml:6:9 error: no dec
1428 2022-07-17
编程技术问答社区