[英]Correcting XML closing tags
我有多個 XML 文檔由於在結束標簽中省略了“/”而意外格式錯誤。 標簽都是匹配的對,所以我們在每個文檔中都有<tagname>
內容<tagname>
等等。 文檔中有一個層次結構,因此我們在其他標簽中確實有標簽(所有打開和關閉的方式都相同)。 如果“/”在結束標記中,則文檔將正確形成。
問題:將“/”插入結束標簽的可靠且“簡單”的方法是什么?
I'm comfortable working with Python (3), VB, VBA, C#, SQL, REGEX and so on. 我希望有人可能已經遇到過這種情況並且有一個可以使用的正則表達式。
大約有 2000 個 XML 文檔,全部存儲在 MySQL (8) 數據庫(InnoDB 表)的 LONGTEXT 字段中。
非常感謝任何幫助或指導。
青蛙
在一般情況下,沒有可靠且簡單的方法可以做到這一點。 它需要一個完整的遞歸解析器(一個能夠處理遞歸語法的)並且超出了正則表達式的能力。
如果您知道<tagname>
元素不能嵌套,那么當您在另一個<tagname>
中遇到<tagname>
時,您就會知道它一定是錯誤的,應該是</tagname>
。 可以使用 SAX 解析器,檢測嵌套的startElement
事件,並替換endElement
事件。 SAX 解析器在到達文檔結尾時最終會失敗,但到那時您可能已經擁有了您需要的所有信息。
如果標簽可以嵌套,那么問題就會變得困難一個數量級,因為您現在需要提前知道哪些開始標簽應該是結束標簽——即使這樣,也會涉及到猜測的元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.