[英]How to parse an XSD file with RapidXML
RapidXML是否具有使用关联模式(即XSD文件)验证/解析XML文件的功能? 我当时假设XML解析器可以同时完成这两项工作。 如果不是,为什么认为没有必要验证/解析关联的架构? 我检查了RapidXML的文档,发现没有提及架构或xsd。
我目前正在像这样解析XML文件:
rapidxml::file<> xmlFile("BeerLog.xml");
rapidxml::xml_document<> doc;
doc.parse<0>(xmlFile.data());
以下sudo代码可能会让您对我正在寻找的东西有更好的了解:
rapidxml::file<> xmlFile("BeerLog.xml", "BeerLog.xsd");
甚至:
rapidxml::file<> xmlFile("BeerLog.xml");
rapidxml::file<> xsdFile("BeerLog.xsd");
rapidxml::xml_document<> doc;
doc.parse_with_schema<0>(xsdFile.data(), xmlFile.data());
您的印象是错误的,访问XML的内容并根据方案进行验证是非常不同的主题,即使前者对后者有用。 特别是轻量级和快速的解析器不支持验证,快速浏览一下文档就可以看到:
W3C合规性。 RapidXml不是W3C兼容的解析器,主要是因为它忽略DOCTYPE声明
还要考虑到,存在非常不同的方案语言(XSD,RNG,DTD等),即使支持一种也不意味着它就是您想要的一种。
您还必须考虑到,有很多XML文件,它们的格式正确且不符合任何方案-仍然有人可能要对其进行处理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.