idea编辑XML文件出现:Tag name expected报错

1,356 阅读3分钟

本文源自Recently祝祝,创自Recently祝祝。转载请标注出处。

此解决方式在企业中有所应用,适合Java初级开发学习,参考。

本文字数与行数,耐心阅读必有收获

image.png

 说明

Tag name expected解释其实就是:需要标记名称,也就是符号不能直接使用的意思。这篇文章的主要说明是Mapper文件中出现这个错误。而所有的DAO层Mapper文件使用的都是XML文件的格式,不管是自定义的还是自动生成的都是XML文件。

XML (eXtensible Markup Language) 是一种标记语言,用于存储和传输数据。在 XML中,有些字符被视为特殊字符,而不是普通字符。

报错

在XMl文件中,SpringBoot中Mapper文件中,其实所有的Mapper文件都是XML格式的文件,并且直接使用比较符号,会出出现Tag name expected的报错。那是因为在XMl中一些特殊字符是不能直接使用的,直接使用就会出现Tag name expected报错,编译不通过,在IDEA中会直接爆红,显示错误。

解释:

在XML中,某些字符不能直接使用是因为它们被保留用于XML文档的结构和语法。这些字符包括:

  1. 尖括号(<和>):在XML中,尖括号用于标记开始和结束标签以及实体引用,不能直接在文本内容中使用。
  2. 引号("和'):引号用于将属性值括起来,如果直接在文本中使用可能会导致解析错误。
  3. &符号:&符号用于表示实体引用,如"<"表示小于号"<"。如果直接在文本中使用可能会导致解析错误。

为了在XML文档中使用这些保留字符,可以使用实体引用或字符引用。实体引用使用“&”符号和一个预定义的名称或数字来表示一个字符,例如“<”表示小于号“<”。字符引用使用Unicode编码值来表示一个字符,例如“<”也表示小于号“<”。这样就可以在XML文档中使用这些保留字符而不会导致解析错误。

解决:

解决方式一:

使用CDATA将字符包裹起来

<![CDATA[<=]]>   //小于等于

<![CDATA[>=]]> //大于等于

 and t.time <![CDATA[<=]]> #{conditionDTO.startDate,jdbcType=TIMESTAMP}

 CDATA说明:

在XML中, 是一个字符数据的语法,用于在XML文档中表示纯文本内容,而不需要对其中的内容进行XML标记解析。

在给定的语法中, 表示一个字符串“<=”,其中字符“<”和“=”不被视为XML标记的一部分,因为它们被包含在 标记中。这意味着XML解析器将这个字符串视为纯文本数据,而不会尝试将其解释为XML标记或实体引用。

CDATA标记通常用于在XML文档中嵌入一些包含XML保留字符或其他特殊字符的文本内容,例如HTML代码或JavaScript代码等。使用CDATA标记可以避免这些特殊字符与XML标记语法冲突,同时确保它们在XML文档中保持原样,而不会被解释为XML标记

解决方式二:

使用预定义字符,来代替直接写相关字符:大于号=&It,小于号=&gt,单引号=&qout,双引号=&apos,操作和=&amp,还有什么需要的字符可以自己去搜索。

预定义实用字符是不存在<=的根据自己的时机情况判断选择说明方式来表示。在预定字符中是不存在大于等于或者是小于等于的,只存在大于或者小于,或者小于,分为三个

我所遇到的Tag name expected爆的错的解决方式,为以上两种,如果你有更好的方式,欢迎评论区讨论。

心态放平,心平气和。