web前端

位置:IT落伍者 >> web前端 >> 浏览文章

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


发布日期:2020年07月16日
 
XML数据进行加密和大小写转换
XML数据一个最普通的问题就是数据的大小写在进行数据转换时常常产生令人头疼的麻烦下面就是一个 解决的办法

假设你有一些数据要发送到另外一个系统它也识别XML格式的数据而且要求全部大写例子数据如下

例子personxml

<Person>

<Name>

<First>net_lover</First>

<Last>Xianhui Meng</Last>

<ChineseName>孟宪会</ChineseName>

</Name>

</Person>

假设你要转换成如下的格式

例子newpersonxml

<PERSON>

<NAME>

<FIRST>NET_LOVER</FIRST>

<LAST>XIANHUI MENG</LAST>

<CHINESENAME>孟宪会</CHINESENAME>

</NAME>

</PERSON>

解决这个转换问题一般是用XPATH函数里的translate()例如

<foo><xsl:valueof 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:valueof select=translate(This is a test $lowercase $uppercase) /></foo>

结果如下

<foo>THIS IS A TEST</foo>

对刚才的问题可以编写XSL文件如下

例子: personxsl

<?xml version= encoding=gb?>

<xsl:stylesheet xmlns:xsl= version=>

<xsl:variable name=uppercase>ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable>

<xsl:variable name=lowercase>abcdefghijklmnopqrstuvwxyz</xsl:variable>

<xsl:template match=/>

<PERSON>

<NAME>

<FIRST><xsl:valueof select=translate(/Person/Name/First$lowercase$uppercase)/></FIRST>

<LAST><xsl:valueof select=translate(/Person/Name/Last$lowercase$uppercase)/></LAST>

</NAME>

</PERSON>

</xsl:template>

</xsl:stylesheet>

启发

从上面的方法呢会想到什么呢?对数据进行加密!对了用这种方法可以实现XML数据的加密

例子

<xsl:variable name=alphanumeric>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

</xsl:variable>

<xsl:variable name=encoded>

KaWXJBbcRdeAMfQgLyhijklEFzmYSnIoDpTZqrNsUtCuOPvVwGxH

</xsl:variable>

<foo><xsl:valueof select=translate(This is a test $alphanumeric $encoded) /></foo>

加密后结果如下

<foo>SnrnrkNzrN</foo>

解密也很简单只要把两个变量颠倒即可

<?xml version= encoding=gb?>

<xsl:stylesheet xmlns:xsl= version=>

<xsl:variable

name=alphanumeric>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz</xsl:variable>

<xsl:variable

name=encoded>KaWXJBbcRdeAMfQgLyhijklEFzmYSnIoDpTZqrNsUtCuOPvVwGxH</xsl:variable>

<xsl:template match=/>

<foo><xsl:valueof select=translate(This is a test $alphanumeric $encoded) /></foo>

|||

<foo><xsl:valueof select=translate(YS S rFr $encoded$alphanumeric ) /></foo>

</xsl:template>

</xsl:stylesheet>

上一篇:实现异步调用Web Service,防止页面超时

下一篇:读写xml个人小结