XML
数据一个最普通的问题就是数据的大小写 在进行数据转换时常常产生令人头疼的麻烦 下面就是一个 解决的办法 假设你有一些数据要发送到另外一个系统 它也识别XML格式的数据 而且要求全部
大写 例子数据如下 例子 person xml <Person> <Name> <First>net_lover</First> <Last>Xianhui Meng</Last> <ChineseName>孟宪会</ChineseName> </Name> </Person> 假设你要转换成如下的格式 例子 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文件如下 例子 : person xsl <?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: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 >ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz </xsl:variable> <xsl:variable name= encoded > K aWXJBb cRdeAMfQgL yhij klEFzmYSnIo DpTZq rNsUtC uOPvVwGxH </xsl:variable> <foo><xsl:value of select= translate( This is a test $alphanumeric $encoded) /></foo> 加密后结果如下 <foo>Snr nr k NzrN</foo> 解密也很简单 只要把两个变量颠倒即可 <?xml version= encoding= gb ?> <xsl:stylesheet xmlns:xsl= version= > <xsl:variable name= alphanumeric >ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz </xsl:variable> <xsl:variable name= encoded >K aWXJBb cRdeAMfQgL yhij klEFzmYSnIo DpTZq rNsUtC uOPvVwGxH </xsl:variable> <xsl:template match= / > <foo><xsl:value of select= translate( This is a test $alphanumeric $encoded) /></foo> ||| <foo><xsl:value of select= translate( YS S rF r $encoded $alphanumeric ) /></foo> </xsl:template> </xsl:stylesheet>lishixinzhi/Article/program/net/201311/13900
/// /// 加密解密key 必须32位.
/// private const string EncryptKey = "332h034r78152dfs8sf56sf05e615w2s"
//内容加密.
public static string Encrypt(string toE)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(EncryptKey)
RijndaelManaged rDel = new RijndaelManaged()
rDel.Key = keyArray
rDel.Mode = CipherMode.ECB
rDel.Padding = PaddingMode.PKCS7
ICryptoTransform cTransform = rDel.CreateEncryptor()
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toE)
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray,0,toEncryptArray.Length)
return Convert.ToBase64String(resultArray,0,resultArray.Length)
}
//内容解密
public static string Decrypt(string toD)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes("332h034r78152dfs8sf56sf05e615w2s")
RijndaelManaged rDel = new RijndaelManaged()
rDel.Key = keyArray
rDel.Mode = CipherMode.ECB
rDel.Padding = PaddingMode.PKCS7
ICryptoTransform cTransform = rDel.CreateDecryptor()
byte[] toEncryptArray = Convert.FromBase64String(toD)
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray,0,toEncryptArray.Length)
return UTF8Encoding.UTF8.GetString(resultArray)
}
评论列表(0条)