如何使用RapidXML解析XSD文件

时间:2019-02-13 16:10:41

标签: xsd 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());

1 个答案:

答案 0 :(得分:0)

您的印象是错误的,访问XML的内容和针对方案进行验证是截然不同的主题,即使前者对后者有用。尤其是轻量级且快速的解析器不支持验证,而快速浏览一下文档就会发现:

  

符合W3C。 RapidXml不是W3C兼容的解析器,主要是因为它忽略DOCTYPE声明

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

您还必须考虑到,有很多XML文件,它们的格式正确且不符合任何方案-仍然有人可能要对其进行处理。