C++ XML Lite解析问题-解析时忽略无效数据
我使用微软的XMLLite(http://msdn.microsoft.com/en-us/library/windows/desktop/ms752872%28v=vs.85%29.aspx) 有没有一种方法可以忽略它可能产生的任何验证错误(我在与“”相关的节点上遇到了一些模糊的错误-尽管XML输入看起来很好)并继续下一个节点 我有这样的阅读循环C++ XML Lite解析问题-解析时忽略无效数据,c++,visual-studio,xml-parsing,xmllite,C++,Visual Studio,Xml Parsing,Xmllite,我使用微软的XMLLite(http://msdn.microsoft.com/en-us/library/windows/desktop/ms752872%28v=vs.85%29.aspx) 有没有一种方法可以忽略它可能产生的任何验证错误(我在与“”相关的节点上遇到了一些模糊的错误-尽管XML输入看起来很好)并继续下一个节点 我有这样的阅读循环 while ( !reader->IsEOF()) { result = reader->Read(&nodeT
while ( !reader->IsEOF())
{
result = reader->Read(&nodeType);
if (result != S_OK)
{
//just ignore cuurrent read and continue reading more from XML
continue; // does not work
}
XmlLite返回的结果是什么?无效字符?XmlLite是一个W3C兼容的XML解析器,这意味着它在设计上会阻塞带有无效字符的无效XML文件,并且没有忽略无效字符并继续前进的功能。这些选择包括:
除此之外,XmlLite可能不是您的选择。在我的例子中,问题是我没有像我预期的那样解析整个XML文档(这并不明显:-),问题就在于此。有趣的是,XmlLite Reader从Win8开始支持非阻塞功能,这意味着当并非所有数据都可用时,您可以在IStream/ISequentialStream实现中返回E_PENDING,我相信这就是您的情况。Read()方法将相应地返回E_PENDING,但如果流中有更多可用数据,则下一个Read()调用将恢复解析。有关更多信息,请参阅。