2010-08-04 71 views
0

有點不尋常的問題 - 在什麼情況下尖括號用反斜槓逃脫?在什麼情況下尖括號用反斜槓逃脫?

我發送一個XML文檔(作爲字符串xsd類型)通過一個Web服務,它將其保存到數據庫,但在那裏我看到所有XML的尖括號用反斜槓轉義,所以我想知道究竟在哪裏(Java XML使用DocumentBuilder和Transformer創建,Web服務堆棧,保存到數據庫還是其他?)它會被轉義?

實施例:

旨在XML:

<?xml version="1.0" encoding="UTF-8"?><Params><param name="qqq">1</param></Params> 

實際結果:

\<?xml versionenter code here="1.0" encoding="UTF-8"?\>\<Params\>\<param name="qqq"\>1\</param\>\</Params\> 

回答

1

左側角支架應當被轉義爲實體& LT; (以及與& amp一樣的任何&符號),這就是所有在XML上下文中轉義的東西。

我遇到了尖括號在正則表達式的上下文中具有不同含義的情況,必須像您的問題中所示那樣轉義。但是沒有符合標準的XML解析器會查看該字符串並說,是的,這非常好。因爲它不是。那些反斜槓不應該在那裏,除非我失去了一些東西。

2

在合法的HTML或XML中,左尖括號字符不會以這種方式轉義。在這兩種格式中,'<'字符被替換爲"&lt;"。具體來說,我不會期望符合標準的XML構建器/序列化器或Web服務堆棧來執行此操作。

它們不會在URL中以這種方式轉義。如果您足夠瘋狂以將XML嵌入到URL中,則可以使用"%xx"編碼。

我不明白爲什麼DBMS需要這樣做來存儲它所存儲的字符數據。

我可以想到在哪裏使用'\'轉義'<'的唯一常見情況是使用某些Wiki標記語言。

IMO,最可能的解釋是,這是您正在使用的Web服務的一些特定於應用程序的funkiness。