2011-08-17 56 views
1

我有一個這樣的XML這是一個有效的XML。現在,如果我使用SaxParser解析它,它會完美驗證。xml解析和捕捉後驗證異常

     <A> 
         <B> 
          <C> 
           <D/> 
          </C> 
          <C> 
           <D/> 
          </c> 
         </B> 
        </A> 

接下來考慮XML這是不結構良好,不是有效的(</C>丟失)。它會在該點扔SaxParserException。但我需要編寫一個捕獲此異常的代碼,並繼續驗證此xml中的下一組標記。

    <A> 
         <B> 
          <C> 
           <D/> 

          <C> 
           <D/> 
          </c> 
         </B> 
        </A> 

不要任何人知道如何繼續從它捕獲的異常

+0

我在印象中看到你以前的問題 - 你有控制架構和XML的能力。如果是這種情況,你不應該陷入這種情況。盡一切努力使XML有效。另一方面,您的問題允許Andreas教我關於TolerantSaxDocumentBuilder;謝謝 :-) – Wivani

回答

2

點驗證XML通常這是不可能的,不應該是可能的。在你的第二個例子中,我們不知道,實際上是什麼遺漏:它是第一個<C>或(2)第二個<C>之後的一個結束標記(1),我們是否有(3)開放<C>標記太多,應該是<C>標籤實際上是讀<C />?有太多的方法來糾正文檔結構。

無論如何,在sourceforge上有一個名爲xmlunit的項目,其中包含一個TolerantSaxDocumentBuilder,聲稱能夠處理缺失的開始和結束標記。它可能已經解決了你的實際問題或。至少它指出了正確的方向:您需要一個自定義薩克斯解析器來實現所需的行爲。