xml嵌套xml時的轉移字符

使用場景

項目中,數據庫升級工具,使用xml格式保存數據庫升級腳本,格式如下:

<?xml version="1.0" encoding="iso-8859-1" ?>
<upgrade version="1.1">
    <sqls>
        <!-- 數據庫升級腳本 -->
        <DML>
            UPDATE sysconfig SET strValue='' where nType=10023;
        </DML>
        <DDL DB="MySql">
            ALTER TABLE device MODIFY COLUMN strPassword VARCHAR(256);
        </DDL>
        <DDL DB="SQLServer">
            ALTER TABLE device ALTER COLUMN strPassword VARCHAR(256);
        </DDL>
    </sqls>
</upgrade>

其中,關於此工具邏輯說明如下:
1. <DML><DDL> 分別對應DML和DDL類型的語句;
2. 如果SQL語句有兼容性問題,需要分別標註數據庫類型,此工具要兼容MySQL和SQL Server;
3. 直接執行SQL語句是不需要對XML的特殊字符做轉義的。

對於以下語句:
UPDATE sysconfig SET strValue=” where nType=10023;


當strValue=”的值爲xml時,將涉及到xml嵌套的問題,需要對內嵌的xml特殊字符做轉義。


解決方案

需要轉義的字符如下:

原字符 轉義字符
< &lt;
> &gt;
" &quot;

特殊說明


但是,有些特殊情況下,要保留轉移字符,需要對轉移字符再次轉義。
比如:&#13;字符,表示HTML的回車符號。在xml中會被忽略掉,因此需要分別對“&”、“#”、“;”做轉義。最終應寫爲:&#38;&#35;13&#59;


參考資料

Html和Xml 文件中的特殊字符 需要轉義
xml中回車的轉義字符串是什麼?該如何處理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章