我正在嘗試修復一些使用正則表達式的雙語xml文件來匹配已知的錯誤內容模式並替換正確的值。 xml文件中的大多數問題都可以被認爲是拼寫錯誤或冗餘數據。使用正則表達式修復xml內容
我確實有一個文本處理工具,它可以在沒有任何正則表達式支持的情況下工作,但是如果我可以使用sed或類似的腳本來編寫批量作業並保留一整夜,那麼整個情況會更容易。一個例子的sed腳本應該解決這個問題看起來可能像下面這樣:
#!/bin/sed -f
s/<prop type="Att::Status">New/<prop type="Att::Status">Not Validated/g
s/<prop type="Att::Status">Approved/<prop type="Att::Status">Validated/g
....
我發現SED不喜歡UTF16文件太多,因爲我們面對的是雙語XML在34個不同的語言組合,使用像iconv這樣的工具來封裝sed腳本可能會非常危險。大多數字符集轉換工具會導致某種類型的損壞,我寧願不用本週的其餘時間來決定腳本正確運行哪種語言。
還值得一提的是,xml充滿了過去幾年客戶的積累翻譯,所以會有大量的錯誤形式的語法可能會影響某些工具。因此,總之,sed + iconv風險太大,我有一個基本的全局文本替換工具,我有Notepad ++,我甚至有一個在sed語法中用於替換的表達式列表。但有沒有更簡單/更好的方法?
感謝。這看起來像是一個很好的前進方向,而不必處理xslt的複雜性。 – IanGilham 2009-04-28 17:56:37