处理XML字符串中特殊字符

日期: 2008-05-11 来源:TechTarget中国

  在做WebServices时为了实现复杂数据的传输,我们经常会采用XML格式的字符串来传送,这主要是由于XML具有存取数据,跨平台及跨语言等好处。请看下面例子:


         public String getAllNewSpace() {
  StringBuffer toClient = new StringBuffer(“< root>”);


  if (null != dataset) {


  while (dataset.next()) {


  toClient.append(“< User>”);


  toClient.append(“< UserName>”);//< ![CDATA[


  toClient.append(dataset.getString(1));


  toClient.append(“< /UserName>”);//]]


  toClient.append(“< UserId>”);


  toClient.append(dataset.getString(2));


  toClient.append(“< /UserId>”);


  toClient.append(“< /User>”);


  }


  }


  toClient.append(“< /root>”);


  return toClient.toString();


  }
 
  如果< UserName>节点中含有“&”,“< ”,“>”等字符时,解释此XML时会出错。


  可以有两种解决方法:


  一、 通过Xml Document对象得到XML字符串返回给客户端,不能直接把XmlDocument返回给客户端,因为Java中的Xml Document对象,别的语言是无法正确解释的,我们只能返回XML 字符串:


  public String getAllNewSpace() {
  Document document = DocumentHelper.createDocument();


  Element root=document.addElement(“root”);


  if (null != dataset) {


  while (dataset.next()) {


  Element user=root.addElement(“User”);


  Element userName=user.addElement(“UserName”);


  userName.setText(dataset.getString(1));


  Element userId=user.addElement(“UserId”);


  userId.setText (dataset.getString(2));


  }


  }


  return document.asXML();


  }
 
  二、 给XML 字符串添加DTD验证:在节点值部份添加“< ![CDATA[ ]]”


  public String getAllNewSpace() {
  StringBuffer toClient = new StringBuffer(“< root>”);


  if (null != dataset) {


  while (dataset.next()) {


  toClient.append(“< User>”);


  toClient.append(“< UserName>< ![CDATA[“);


  toClient.append(dataset.getString(1));


  toClient.append(“]]< /UserName>”);


  toClient.append(“< UserId>”);


  toClient.append(dataset.getString(2));


  toClient.append(“< /UserId>”);


  toClient.append(“< /User>”);


  }


  }


  toClient.append(“< /root>”);


  return toClient.toString();


  }

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • BEST:SOAP/XML和REST的替代方案

    虽然拥有大量的机架服务器,以及大量软件开发人员的组织,基于web和集成服务的SOAP和REST很适合他们,但也会出现问题。

  • Spring 烂!差!

    有些人可能对Spring的第一印象不太好,它真的很烂,很差吗,也许这只是你的一种偏见,它也有是自己的优点的。

  • 基于SOA架构的业务安全性研究

    SOA在提供价值链上企业之间信息共享和业务流程自动化的同时,也给业务信息安全带来了负面影响,且存在安全隐患,这些你知道吗?

  • Java读取配置文件的几种方法

    在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配置文件来完成,那么在Java怎样读取配置文件呢?