2009-09-10 67 views
0

我的應用程序使用的文件格式是基於Xml的。我剛剛收到一個客戶,他有一個拙劣的XML文件。東西包含近9萬行,由於某種原因,大約有20個「=」符號隨機散佈。C#中的XML修復#

我得到一個XmlException對於他們中的大多數與一個行號和字符位置,這使我可以發現有問題的字符和手動刪除它們。我剛剛開始編寫一個可以自動執行此過程的小應用程序,但我想知道是否有更好的方法來修復損壞的xml文件。拙劣線

例子:

<item name="InstanceGuid" typ=e_name="gh_guid" type_code="9">ee330f9f-a1e2-451a-8c6d-723f066a6bd4</item> 
          ↑ (this is supposed to be [type_name]) 

回答

1

你可以搜索任何等號後面沒有雙引號。正則表達式(正則表達式)寫起來很簡單。

或者您可以在高級文本編輯器中打開該文件,並使用相同的正則表達式搜索並找到並替換/刪除。有些文本編輯器允許你用正則表達式來查找/替換,所以你可以搜索任何等號不跟雙引號,然後刪除它。

當然,我會保持原有的副本,因爲如果你在內部XML有等號,那麼它可能搞砸了,等

+0

感謝吉姆,這會發現大部分的錯誤。 – 2009-09-11 00:20:52

1

使用正則表達式先清理的XML。

類似:

s/([^\s"]+)=([^\s"]+="[^"]*")/\1\2/ 

顯然,這將需要移植到選擇:)你的正則表達式引擎

+0

感謝OJ,這些日子似乎越來越多的問題可以通過RegEx解決。 – 2009-09-11 00:21:27

+0

我建議謹慎應用上述說明。 ;) – TrueWill 2009-09-11 00:25:25

+0

毫無疑問。目標是提供一個想法,而不是生產質量實施。因此聲明「類似」:) – 2009-09-14 04:41:09

1

在TextPad如果搜索使用正則表達式= [^「],你會發現任何=標誌後面沒有「

這應該找到文檔中出現流氓=符號的位置。要替換它們,請先在TextPad中打開文檔。然後按F8。

在對話框中輸入以下內容:

查找內容:= \([^ 「] \)

替換爲:\ 1

檢查 」正則表達式「 框中,選擇」所有文件「,然後單擊」全部替換「

這應該匹配所有=後面跟着一個」,並用符號代替=。

類型名稱= 「測試」(典型值)=爲ename = 「測試」

將成爲

類型名稱= 「測試」 類型名稱= 「測試」