如何使用 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 文件,它们只是格式正确,不符合任何方案 - 尽管如此,有人可能想要处理它们。
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 文件,它们只是格式正确,不符合任何方案 - 尽管如此,有人可能想要处理它们。