科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道XML数据进行加密和大小写转换

XML数据进行加密和大小写转换

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

   XML数据一个最普通的问题就是数据的大小写,在进行数据转换时常常产生令人头疼的麻烦。下面就是一个 解决的办法。 假设你有一些数据要发送到另外一个系统,它也识别XML格式的数据,而且要求全部大写。

作者:中国IT实验室 来源:中国IT实验室 2007年9月28日

关键字: XSL 利用 编程

  • 评论
  • 分享微博
  • 分享邮件
      XML数据一个最普通的问题就是数据的大小写,在进行数据转换时常常产生令人头疼的麻烦。下面就是一个 解决的办法。
  
  假设你有一些数据要发送到另外一个系统,它也识别XML格式的数据,而且要求全部大写,例子数据如下:
  
  例子1:person.xml
  
  <Person>
   <Name>
   <First>net_lover</First>
   <Last>Xianhui Meng</Last>
   <ChineseName>孟宪会</ChineseName>
   </Name>
  </Person>
  假设你要转换成如下的格式:
  
  例子2:newperson.xml
  
  <PERSON>
   <NAME>
   <FIRST>NET_LOVER</FIRST>
   <LAST>XIANHUI MENG</LAST>
   <CHINESENAME>孟宪会</CHINESENAME>
   </NAME>
  </PERSON>
  解决这个转换问题一般是用XPATH函数里的translate(),例如:
  
   <foo><xsl:value-of select="translate('This is a test', 'tis', 'TIS')" /></foo>
  转换后结果如下:
  
   <foo>ThIS IS a TeST</foo>
  但是如何把全部的文字转换成大写呢?下面就是进行这样处理的代码:
  
  先定义两个变量:
  
   <xsl:variable name="uppercase">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable>
   <xsl:variable name="lowercase">abcdefghijklmnopqrstuvwxyz</xsl:variable>
  再进行转换:
  
   <foo><xsl:value-of select="translate('This is a test', $lowercase, $uppercase)" /></foo>
  结果如下:
  
   <foo>THIS IS A TEST</foo>
  对刚才的问题,可以编写XSL文件如下:
  
  例子3: person.xsl
  
  <?xml version="1.0" encoding="gb2312"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
   <xsl:variable name="uppercase">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable>
   <xsl:variable name="lowercase">abcdefghijklmnopqrstuvwxyz</xsl:variable>
   <xsl:template match="/">
   <PERSON>
   <NAME>
   <FIRST><xsl:value-of select="translate(/Person/Name/First,$lowercase,$uppercase)"/></FIRST>
   <LAST><xsl:value-of select="translate(/Person/Name/Last,$lowercase,$uppercase)"/></LAST>
   </NAME>
   </PERSON>
   </xsl:template>
  </xsl:stylesheet>
  启发
  
  从上面的方法呢会想到什么呢?对数据进行加密!对了,用这种方法可以实现XML数据的加密。
  
  例子:
  
   <xsl:variable name="alphanumeric">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
   </xsl:variable>
  
   <xsl:variable name="encoded">
   K1aWXJBb2cRdeAMfQgL8yhij976klEFzmYSnIo4DpTZq5rNsUtC0uOPvVwGxH3
   </xsl:variable>
  
   <foo><xsl:value-of select="translate('This is a test', $alphanumeric, $encoded)" /></foo>
  加密后结果如下:
  
   <foo>8Snr6nr6k6NzrN</foo>
  解密也很简单,只要把两个变量颠倒即可。
  
  <?xml version="1.0" encoding="gb2312"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
   <xsl:variable
  
  name="alphanumeric">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789</xsl:variable>
  
   <xsl:variable
  
  name="encoded">K1aWXJBb2cRdeAMfQgL8yhij976klEFzmYSnIo4DpTZq5rNsUtC0uOPvVwGxH3</xsl:variable>
  
   <xsl:template match="/">
   <foo><xsl:value-of select="translate('This is a test', $alphanumeric, $encoded)" /></foo>
   |||
   <foo><xsl:value-of select="translate('8YS5 S5 6 rF5r', $encoded,$alphanumeric )" /></foo>
  
   </xsl:template>
  </xsl:stylesheet>

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件