【问题标题】:Opening and ending tag mismatch: meta line 4 and head开始和结束标签不匹配:meta line 4 和 head
【发布时间】:2015-11-23 15:14:37
【问题描述】:

这是我的代码,我发现大多数网站页面文档都会出现此错误,如何解决?

#include <libxml/parser.h>

int main(int argc, char **argv) {
    xmlParseDoc("<!DOCTYPE html>\n"
                        "<html lang=\"en\">\n"
                        "<head>\n"
                        "  <meta charset=\"utf-8\"> \n"
                        "</head>\n"
                        "<body>\n"
                        "\n"
                        "</body>\n"
                        "</html>");
    return (0);
};

【问题讨论】:

    标签: xml xml-parsing libxml2


    【解决方案1】:

    您的meta 标签似乎没有关闭。

    "  <meta charset=\"utf-8\"> \n"
    

    应该是

    "  <meta charset=\"utf-8\"/> \n"
    

    【讨论】:

    • 有更好的方法吗?我发现大多数网站(例如 stackoverflow.com) 不是
    • 只有两种方法可以关闭它。
    • 但是根据w3schools.com/tags/tag_meta.asp,html header mata应该是这样的。
    【解决方案2】:

    使用 htmlParseDoc 代替 xmlParseDoc,如下所示:

    #include "libxml/HTMLparser.h"
    
    int main(int argc, char **argv) {
        xmlDoc *d = htmlParseDoc("<!DOCTYPE html>\n"
                                         "<html lang=\"en\">\n"
                                         "<head>\n"
                                         "  <meta charset=\"utf-8\"> \n"
                                         "</head>\n"
                                         "<body>\n"
                                         "\n"
                                         "</body>\n"
                                         "</html>", "utf-8");
        return (0);
    };
    

    【讨论】:

      【解决方案3】:

      HTML 和 XHTML 的区别 在 HTML 中,标签没有结束标签。

      在 XHTML 中,标签必须正确关闭。

      【讨论】:

        猜你喜欢
        • 2016-09-15
        • 1970-01-01
        • 2012-04-01
        • 2011-11-02
        • 2012-09-29
        • 2016-08-27
        • 2014-10-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多