[置顶] LuaXml在打印CDATA时,失效了,被转义了

标签: lua nginx xml
20人阅读 评论(0) 收藏 举报
   NgxLua过滤报文时,会使用到LuaXml解析报文体,获取解析报文xml对象 方便对报文信息的获取,有的时候,需要在原报文的基础上增加新的xml节点以满足项目需要,如果新添加的xml节点是 CDATA ,通过LuaXml添加的子节点,新的xml对象在序列化生成xml字符串的时候,会将 CDATA 关键字进行转义,例如下面的赋值语句,在生成xml字符串的时候会将报文CDATA转义,

"xDoc:find('soapenv:Envelope'):find('soapenv:Body'):find('chin:exchange'):find('chin:in0')[1] = '<![CDATA['..reqSvc..']]>'"

解决方法:

在LuaXml.lua文件的62行替换成下面的语句:

      local temp_str = base.string.match(var[1],"<!%[CDATA%[.*%]%]>$")
      if temp_str == nil then
        s = s..">"..encode(base.tostring(var[1])).."</"..tag..">\n"
      else
        s = s..">"..base.tostring(var[1]).."</"..tag..">\n"
      end

差分如图:



查看评论

xml CDATA尖括号被转义后处理办法

xml 内容中包含转义字符,此时需要使用CDATA包裹, 如果接收后出现&lt;![CDATA[KFC]]&gt; 则把得到的字符串经过下面2个转换,则可得到正确的结果。 strResult...
  • shui0527
  • shui0527
  • 2016-10-18 11:26:08
  • 2090

XML的CDATA区域(无视特殊字符,一般用在需要多处处理转义的语句中)

CDATA区域:         语法:
  • wb7880067
  • wb7880067
  • 2017-06-28 10:59:57
  • 278

<![CDATA[]]>和转义字符的使用和联系

一、转义方法介绍 第一种方法: 用了转义字符把>和   SELECT * FROM test WHERE 1 = 1 AND start_date  &lt; = CURRENT_DA...
  • u010375663
  • u010375663
  • 2017-05-17 21:54:46
  • 1102

JAXB控制CDATA节点转义

参看:http://liugang594.iteye.com/blog/1981726 参看:http://blog.csdn.net/qustmeng/article/details/537066...
  • xiaoxiaoyusheng2012
  • xiaoxiaoyusheng2012
  • 2017-10-12 18:48:50
  • 596

XML中的转义字符和CDATA部件

转自:http://www.cnblogs.com/qiantuwuliang/archive/2010/03/29/1699361.html 解析数据 XML 解析器通常情况...
  • yasi_xi
  • yasi_xi
  • 2014-04-29 15:23:26
  • 6912

xml中的<![CDATA[]]>和转义字符

被这个标记所包含的内容将表示为纯文本,比如表示文本内容“。    此标记用于xml文档中,我们先来看看使用转义符的情况。我们知道,在xml中,”、”>”、”&”等字符是不能直接存入的,否则xml语法...
  • asdfsadfasdfsa
  • asdfsadfasdfsa
  • 2017-07-04 14:41:49
  • 1546

mybatis中的xml文件中的特殊转义字符处理(<[!CDATA[]]>的用法)

我们在使用Mybatis的时候,大致由三部分组成。 model、mapper接口、mapper.xml 1:其中model就是我们经常使用的实体类,可以再mapper.xml中直接使用(当做参数或...
  • dark_horse_lk
  • dark_horse_lk
  • 2017-03-22 20:16:18
  • 1050

axis2 生成CDATA节点

SOAPFactory factory = OMAbstractFactory.getSOAP11Factory(); SOAPEnvelope envelope = factory.getDefau...
  • pdw2009
  • pdw2009
  • 2016-01-19 11:58:24
  • 874

JAXB将JAVA对象转换为XML时CDATA的问题

对Java对象转换为xml字符串时,如果有特殊字符如必须要是用来声明。我先尝试了使用XStream解决这个问题也有使用MOXy CDATA注解解决,最后发现,都存在一定的缺陷,甚至不能正常的实现该功能...
  • wantken
  • wantken
  • 2016-02-16 16:43:11
  • 4000

luaXml库的使用方法

提供一个xml文件 17 250 12 150 14 200 提供解析该xml的lua脚本 --------------------------------...
  • shaonian_wuya
  • shaonian_wuya
  • 2013-11-14 17:29:17
  • 4544
    个人资料
    等级:
    访问量: 33
    积分: 20
    排名: 218万+
    文章分类
    文章存档