html标签被当成文本

JSON对象中的HTML标签解析问题及解决方案
博客讲述了在后台返回的JSON对象中,HTML标签如`<br/>`被当作文本显示的问题,导致格式混乱。文章重点在于提供了解决此类问题的方法,即通过编写特定的函数来正确处理这些标签。

后台在完成功能之后返回json对象

	@RequestMapping("/upLoad")
	@ResponseBody
	public HarJson upLoad(MultipartFile upfile,String pipeId){
		HarJson harJson = new HarJson();
		//数据解析
		boolean b = false;
		//获取文件名
		String name = upfile.getOriginalFilename();
		//获取文件的大小
		long size = upfile.getSize();
			  if(name==null || ("").equals(name) && size==0){
				  harJson.setSuccess(false);
				  harJson.setMsg("未选择文件");
				  return harJson;
		      }else if(CheckExcel.validateExcel(name)==false){
		    	  harJson.setSuccess(false);
				  harJson.setMsg("文件格式不正确");
				  return harJson;
		      }
		//创建处理excel
		ReadExcel readExcel = new ReadExcel();
		//解析excel,获取管道信息
		List<Anchor> anchorList = readExcel.getExcelInfo(upfile);
			if(readExcel.getErrorMsg().equals("")&&anchorList != null && !anchorList.toString().equals("[]") && anchorList.size()>=1){
			         b = true;
			     }
			if(b){
				for(Anchor anchor : anchorList){
					fileService.importAnchor(anchor,pipeId);
				 }
					 harJson.setSuccess(true); 
					 harJson.setMsg("导入成功");
				 }else{
					 harJson.setSuccess(false); 
					 harJson.setMsg(readExcel.getErrorMsg());  
				 }
		return harJson;
	}
}

其中readExcel.getErrorMsg 为 errorMsg=errorMsg+"第"+(x+1)+"行,"+colMark+"列数据类型错误!<br/>";

总之,重点是返回的json对象里包含有<br/>标签!!!!!

然后就成了这样~~



解决办法:

首先,写一个函数

function escape2Html(str) {
	 var arrEntities={'lt':'<','gt':'>','nbsp':' '};
	 return str.replace(/&(lt|gt|nbsp);/ig,function(all,t){return arrEntities[t];});
	}
	
再调用反编译函数escape2Html(result.msg就是返回的json对象)

var msg = escape2Html(result.msg);
$("#errorMsg").html(msg);


就成功啦!!




<think>嗯,用户问的是HTML字符串中hr标签的等价表示方法。首先,我得确认hr标签的基本用法。hr是水平线标签,用来在页面中插入一条水平分隔线。通常它是自闭合的,也就是写成<hr>或者<hr/>。不过在HTML5里,自闭合标签可以不用斜杠,所以<hr>就足够了。XHTML可能需要写成<hr/>。 然后用户提到“等价表示方法”,可能想知道是否有其他方式可以达到同样的效果,或者是否有转义字符或Unicode可以替代。比如,有时候可能会用CSS来画线,比如用div加上边框样式,这样可能更灵活。例如用<div style="border-top:1px solid black; margin:10px 0;"></div>,这样可以调整颜色、粗细、边距等属性,比默认的hr更可控。 另外,用户可能看到过某些情况下hr标签被转义的情况,比如在JavaScript字符串中或者某些模板引擎里需要转义尖括号。例如,在JavaScript中可能需要写成<hr>,这样字符串里就能正确显示为<hr>。不过如果直接作为HTML标签使用,应该不需要转义,否则会被当成文本显示。 还要考虑用户可能遇到的问题,比如动态生成HTML时如何处理标签。例如用JavaScript的createElement方法创建hr元素,或者用innerHTML插入字符串。这时候需要确保字符串中的标签正确无误,不会被转义。 另外,可能涉及到不同规范下的写法差异,比如HTML4和HTML5的区别,或者XHTML的严格要求。这时候需要说明不同情况下hr标签的正确写法。 最后,总结一下,hr的等价表示包括标准标签写法、转义后的字符串形式,以及用CSS模拟的方法。需要根据具体的使用场景来选择合适的方式。</think>HTML字符串中`<hr>`标签的等价表示方式有以下三种实现形式: ### 一、标准标签写法 1. **基础语法**:`<hr>`是HTML5标准下的自闭合标签,用于创建水平分割线 ```html <hr> <!-- 默认样式,显示为灰色1px高度的水平线 --> ``` 2. **XHTML兼容写法**:`<hr />`适用于需要严格遵循XML规范的场景 ```html <hr /> <!-- 带闭合斜杠的规范写法 --> ``` ### 二、转义字符表示 3. **HTML实体转义**(适用于需要显示原始标签文本的场景): ```html <hr> <!-- 显示为<hr>文本而非渲染为水平线 --> ``` 4. **JavaScript动态生成**(通过DOM操作创建等效元素): ```javascript const hrElement = document.createElement('hr'); document.body.appendChild(hrElement); ``` ### 三、CSS模拟实现 5. **纯CSS实现**(通过`div`+样式模拟更灵活的分割线): ```html <div style="border-top: 2px dashed #999; margin: 20px 0;"></div> ``` ### 四、特殊场景应用 6. **正则表达式匹配**(用于过滤/检测HTML字符串中的`<hr>`标签): ```javascript const hrRegex = /<hr\s*\/?>/gi; // 匹配所有hr标签变体[^1] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值