如何使用 RapidXML 解析 XSD 文件

How to parse an XSD file with RapidXML

RapidXML 是否能够 validate/parse 具有关联架构的 XML 文件,即 XSD 文件?我假设 XML 解析器有能力同时做到这两点。如果不是,为什么认为 validate/parse 关联模式没有必要?我检查了 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 Compliance. RapidXml is not a W3C compliant parser, primarily because it ignores DOCTYPE declarations

还考虑到存在完全不同的方案语言(XSD、RNG、DTD 等),即使支持其中一种也不意味着它就是您想要的。

您还必须考虑到,有许多 XML 文件,它们只是格式正确,不符合任何方案 - 尽管如此,有人可能想要处理它们。