xml中的实体引用(<和&)

原创 2012年03月26日 11:51:22

       在聊天项目中发现内容里面只要有< 和&这两个字符,就显示不了,后来查资料发现这是xml中的非法字符在作怪,解决的办法是在编码之前,也就是把文本信息转化成xml格式之前先用实体引用替换了,message = [message stringByReplacingOccurrencesOfString:@"&" withString:@"&amp;"];
    message = [message stringByReplacingOccurrencesOfString:@"<" withString:@"&lt;"];;//实体引用;之后在xml解析的时候,在代理方法- (NSData *)          parser:(NSXMLParser *)parser
   resolveExternalEntityName:(NSString *)entityName
                    systemID:(NSString *)systemID {
  static NSDictionary* entityTable = nil;
  if (!entityTable) {
    entityTable = [[NSDictionary alloc] initWithObjectsAndKeys:
      [NSData dataWithBytes:" " length:1], @"nbsp",
      [NSData dataWithBytes:"&" length:1], @"&amp",
      [NSData dataWithBytes:"\"" length:1], @"quot",
      [NSData dataWithBytes:"<" length:1], @"&lt",
      [NSData dataWithBytes:">" length:1], @"gt",
      nil];
  }
  return [entityTable objectForKey:entityName];
}

里面,把实体引用的字符再替换回来,就ok了!

实体引用

在 XML 中,一些字符拥有特殊的意义。

如果你把字符 "<" 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。

这样会产生 XML 错误:

<message>if salary < 1000 then</message>

为了避免这个错误,请用实体引用来代替 "<" 字符:

<message>if salary &lt; 1000 then</message> 

在 XML 中,有 5 个预定义的实体引用:

&lt; < 小于
&gt; > 大于
&amp; & 和号
&apos; ' 单引号
&quot; " 引号

注释:在 XML 中,只有字符 "<" 和 "&" 确实是非法的。大于号是合法的,但是用实体引用来代替它是一个好习惯。



[XML]学习笔记(二)——DTD的声明与实体

一、 文档类型声明: a) 内部DTD的声明: DTD定义语句与XML文档在同一文档,通常放在头部。格式如下: 注意在DOCTYPE后面跟的是根标记的名字。 b) 外部DTD的声明: i. …...
  • CristianoJason
  • CristianoJason
  • 2016年03月28日 19:20
  • 1542

如何在MyEclipse中使用MyBatis将MySQL数据表生成相应的实体类和映射文件

———需要的配置文件可以去我上传的资源里下载——- 第一步:在MySQL中创建用户和相应的数据表 这里示例用到的用户名为:mybatis,数据表有:student、teacher等...
  • tao_ssh
  • tao_ssh
  • 2016年07月17日 14:59
  • 3289

VS2013与MySql建立连接;您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mysql的技巧

因为之前都是看别人的项目,而没有自己从头到尾建立一个项目,所以这次尝试搭建时就出现了问题,主要是ASP.Net MVC项目中VS2013和MySql的连接。 第一个问题: 数据库表已建好,相应的数...
  • xiaomayi201314
  • xiaomayi201314
  • 2016年01月12日 15:27
  • 8477

909422229__XML的实体引用

先看xml的文档结构: 1,XML声明 xml文档是由一组使用唯一名称标识的实体组成的。始终以一个声明开始,这个声明指定该文档遵循XML1.0的规范。XML也有一种逻辑结构,在逻辑上,文档的组...
  • a909422229
  • a909422229
  • 2016年09月06日 18:47
  • 719

.xml外部实体引用

ΧΜL引用外部DTD文件 这个就是XML的声明,声明也是处理指令,在XML中,所有的处理指令都以结束。 实体格式如下: 实体分两类: 1.一般实体(格式:&实体引用名) 2.参...
  • lileiyuyanqin
  • lileiyuyanqin
  • 2017年06月01日 10:30
  • 1006

xml的5 个预定义的实体引用

所有 XML 文档中的文本均会被解析器解析。 只有 CDATA 区段(CDATA section)中的文本会被解析器忽略。 PCDATA PCDATA 指的是被解析的字符数据(Parse...
  • rshw123456
  • rshw123456
  • 2012年03月15日 14:36
  • 4006

digester解析xml_org.xml.sax.SAXParseException; lineNumber: 2193; columnNumber: 41; 引用了实体 "nbsp", 但未声明它

四月 14, 2014 2:00:45 下午 org.apache.commons.digester.Digester fatalError 严重: Parse Fatal Error at lin...
  • qq525099302
  • qq525099302
  • 2014年05月02日 22:45
  • 123262

自动生成Mybatis 实体类、DaoMapper、XML可视化界面工具

  • 2017年10月26日 11:33
  • 27.14MB
  • 下载

使用Hibernate逆向生成实体类的方法(注解和hbm.xml映射文件)

  • 2017年12月14日 18:03
  • 2.95MB
  • 下载

xml格式的实体

  • 2014年03月26日 17:39
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:xml中的实体引用(<和&)
举报原因:
原因补充:

(最多只允许输入30个字)