【问题标题】:XML error message Opening and ending tag mismatchXML 错误消息开始和结束标记不匹配
【发布时间】:2021-09-23 12:06:42
【问题描述】:
<?xml version="1.0" encoding="utf-8"?>

<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ramy Capital</title> />
</head>

错误信息如下。 我做错了什么?

开始和结束标记不匹配:元行 0 和头部

【问题讨论】:

    标签: xml


    【解决方案1】:

    从倒数第二行删除“/>”

    【讨论】:

    • 问题是,这是我添加的,以尝试修复无论如何都发生的原始错误。
    【解决方案2】:

    问题在于您尝试将 HTML 作为 XML 处理。 HTML 解析器的容错性更强,因为 XML 文件必须格式正确有效。这样的 XML 文档必须满足the following conditions:

    语法规则在前面章节中已经介绍过:

    • XML 文档必须有根元素
    • XML 元素必须有一个结束标记
    • XML 标签区分大小写
    • XML 元素必须正确嵌套
    • 必须引用 XML 属性值

    因此,您的代码的格式正确有效版本将是

    <?xml version="1.0" encoding="utf-8"?>
    <head>
      <meta charset="utf-8" />
      <meta http-equiv="X-UA-Compatible" content="IE=edge" />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <title>Ramy Capital</title>
    </head>
    

    这是 XML,而不是 HTML。

    【讨论】:

      【解决方案3】:

      您正在尝试将 HTML 解析为 XML,但这是行不通的。 HTML 基于/使用 SGML 中不受 XML 支持的特性(即,不是 SGML 的 XML 子集的一部分)。具体来说,您的标记包含 meta 开始元素标签,没有后续的结束元素标签。要在 SGML 中以这种方式使用元素,您必须声明此类元素具有 EMPTY 内容(或者,声明元素以允许省略结束标记)。 HTML 解析器将这些规则硬编码,或者可以解析/加载合适的标记声明。

      如果您想继续使用 XML 来完成您手头的任务,您必须按照 zx485 或同等的建议编辑您的输入标记。或者,您可以使用 HTML 或 SGML 解析器。要使用 SGML 将所有花里胡哨的有效 HTML 转换为 XML/XHTML,您可以按照我两年前准备的教程进行操作:Parsing HTML on sgmljs.net;您还可以从那里找到有关其他常见 HTML 解析问题的大量信息。

      在任何情况下,也请按照 Rahul Maurya 的建议进行操作,并删除您为修复标记而插入的虚假的类似 end-element-tag 的字符序列。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-19
        • 1970-01-01
        • 2012-09-29
        • 1970-01-01
        • 2016-08-27
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        相关资源
        最近更新 更多