2011-12-22 24 views
2

我使用與下面顯示的代碼類似的代碼來解析XML文檔。將代碼解析爲Node樹後,將其作爲我的程序的配置進行處理。由於許多原因,此配置中可能會出現錯誤,需要將錯誤報告給用戶。您如何在XML文檔中向用戶表示地點?

我的程序正在假設所有錯誤都可歸因於單個節點(即使該節點只是檢測到錯誤的點)。

如果只是從一個平面文件(逐行讀取)中讀取此配置,則向用戶報告的錯誤可能類似於Error at line number 42 ...,但是因爲錯誤僅在配置被解析爲抽象節點樹後才被檢測到,錯誤在配置文件中的位置已經丟失。

我該如何表示錯誤節點的位置,以便記住這些配置文件可能相當大?

解析代碼

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = factory.newDocumentBuilder(); 
Document doc = db.parse(inputDocument); 
+0

您的意思是錯誤不在XML結構本身中,而是xml中的值作爲程序的輸入無效? – 2011-12-22 22:55:30

+0

確實是。假設上述代碼成功,否則將以不同的方式處理。 – 2011-12-22 22:59:57

+0

你想報告一個XPath到不正確的位置嗎?行號可能或可能不合適。它取決於XML本身的格式。如果XML沒有格式化呢? – sethu 2011-12-23 00:28:04

回答

0

如果錯誤是不是在XML結構,但在XML中的值是爲你的程序輸入無效,那麼它將使最有意義,使特定領域的報告給用戶。

想象一下,您的用戶是理賠員。你應該給他哪個錯誤報告?

  1. 「data.xml中第3253行的數據錯誤」;
  2. 一些XPath表達式;
  3. 「無效的和解提議WRT彼得森聲稱,報價不得超過statory限制」

例1和2是不可破譯。案例3可以採取行動。

+2

couling可以使用這個谷歌搜索的例子:http://eyalsch.wordpress.com/2010/11/30/xml-dom-2/ 並返回文件+行號(1)*和*(3),我認爲這是最好的。 – 2011-12-23 02:29:56

+0

@owlstead你可以把它作爲一個awnser,因爲它看起來是我所需要的。在這種情況下,「用戶」將是一個系統管理員,我們正在談論更多關於服務器端應用程序配置而不是最終用戶輸入。保持錯誤信息有意義無疑是一個挑戰,但它必須引用回配置文件。錯誤可能希望報告缺失的屬性,說明名稱,因此「彼得森索賠」是缺少的東西。 – 2011-12-23 11:01:17

相關問題