如何确保"整洁"库只纠正那些必需的标签。

时间:2017-07-07 06:46:26

标签: xml parsing xml-parsing warnings tidy

目前我传递我的xml字符串作为整洁功能的输入。

string validateXml(const std::string &html)
{
    // init a tidy document
    TidyDoc tidy_doc=tidyCreate();
    TidyBuffer output_buffer= {0};

    // configure tidy
    // the flags tell tidy to output xml and disable warnings
    bool config_success=tidyOptSetBool(tidy_doc,TidyXmlOut,yes)
                        && tidyOptSetBool(tidy_doc,TidyQuiet,yes)
                        && tidyOptSetBool(tidy_doc,TidyNumEntities,yes)
                        && tidyOptSetBool(tidy_doc,TidyShowWarnings,no);

    int tidy_rescode=-1;

    // parse input
    if(config_success){
        tidy_rescode=tidyParseString(tidy_doc,html.c_str());
    }

    // process html
    if(tidy_rescode>=0){
        tidy_rescode=tidySaveBuffer(tidy_doc,&output_buffer);
    }

    if(tidy_rescode<0){
        throw("tidy has a error: "+tidy_rescode);
    }

    std::string result=(char *)output_buffer.bp;
    tidyBufFree(&output_buffer);
    tidyRelease(tidy_doc);

    return result;
}

我只是想让它只验证那些需要的部分,而不提供完整的HTML结构。

还有如何隐藏在验证无效的xml字符串之前使用xmlParseMemory获得的警告?

s = validateXml(s);
doc = xmlParseMemory(s.c_str(), s.length());

以上是无效的xml字符串,但是当我使用

时如何隐藏警告
doc = xmlParseMemory(s.c_str(), s.length());
s = validateXml(s);

0 个答案:

没有答案