2012-01-23 55 views
0

有誰知道一種工具,它允許我在Java中使用XML字符串,根據模式對其進行檢查,並在其格式錯誤時對其進行修復?
例如,給出下面的架構和XML代碼使用XML模式修復Java中的XML

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
elementFormDefault="qualified"> 

    <xs:element name="tag"> 
    <xs:element name="subtag" type="xs:token" /> 
    </xs:element> 
</xs:schema> 


<tag> 
<subtag>content 
</tag> 

我要尋找一個工具,它可以讀取模式,解析XML,發現失蹤的標籤,並添加它。爲了這個特定的程序的目的,除了缺少標籤之外,我不需要任何更正。 (順便說一句,一個工具,可以找到並添加缺少標籤,而不使用模式也是)。
有什麼建議嗎?

+0

這不是XML Schema的用途。只有你可以修復XML。 – skaffman

+0

然後我不需要使用該模式。 :)但問題仍然存在,我該如何_automatically_修復XML? – Boistyjones

+1

似乎這個問題是類似的足以幫助http://stackoverflow.com/questions/2033154/how-to-fix-unclosed-tag-xml-in-java –

回答

0

嘗試JTidy,它將修復格式不正確的XML和HTML。

+0

我認爲JTidy將修復格式良好的錯誤,但不有效性錯誤。但我可能是錯的。 –

1

當然,麻煩在於,對於任何不符合模式的實例,都會有無數個符合模式的「相似」實例,您的挑戰是選擇一個在某種程度上是「最相似的」。

HTML5試圖通過一套詳盡的規則來做到這一點。這些規則包含了大量關於特定模式的知識,例如,如果一個tr被發現爲一個表的子元素,那麼tr被包裝在一個tbody中。你可以嘗試爲你的模式/詞彙做同樣的事情,但要做好大量的工作。

對任意模式做同樣的事情聽起來像一個有趣的博士項目。成功地做到這一點可能需要對偏離模式的原因進行一些研究(正如拼寫校正應該考慮輸入是由用戶鍵入,通過語音識別獲得的,還是使用OCR掃描獲得的) - 每種模式都引入了不同類型的錯誤)。