笔者的编程语言:C++
xmlReadFile的函数原型:
xmlDocPtr xmlReadFile (const char * filename, const char * encoding, int options)
filename: | 目标文件的路径名或URL |
encoding: | 目标文件的编码方式,可以为NULL |
options: | 枚举变量xmlParserOption中的一个值或多个值的组合,可以为0。 |
返回值: | XML文档的树结构。解析失败返回NULL |
options的常用取值:
XML_PARSE_RECOVER = 1<<0, /* recover on errors */ 尝试修复错误语法
XML_PARSE_NOERROR = 1<<5, /* suppress error reports */ 不输出错误日志
XML_PARSE_NOWARNING = 1<<6, /* suppress warning reports */ 不输出警告日志
XML_PARSE_PEDANTIC = 1<<7, /* pedantic error reporting */ 输出详细的错误日志
XML_PARSE_NOERROR和XML_PARSE_NOWARNING的功能是“当运行命令行程序时不输出错误/警告日志”。
XML_PARSE_RECOVER和XML_PARSE_PEDANTIC的功能笔者不打保票。
XML_PARSE_RECOVER的意思是“尝试修复错误(不严格)的语法”,比如标签没有关闭的情况,采用XML_PARSE_RECOVER之后xmlReadFile会认为它是合法的。可以确定的是:采用XML_PARSE_RECOVER之后,只要目标文件可以访问,xmlReadFile就不会返回NULL,即使这个文件和XML八杆子打不着也不会。这个参数大概是用于解析html这种语法不严格的标记语言的。