熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

XML數據進行加密和大小寫轉換

2013-11-13 10:31:27  來源: .NET編程 
    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>

From:http://tw.wingwit.com/Article/program/net/201311/13900.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.