2012-04-09 45 views
-2

我正在根據XSD驗證XML。但是我的java驗證錯誤消息與XMLSpy的驗證錯誤消息不同。這裏XMLSpy是正確的,並且java驗證信息是誤導性的。我使用下面的代碼來驗證XML:誤導性Java XML驗證

SAXParserFactory factory = SAXParserFactory.newInstance(); 
factory.setValidating(true); 
factory.setNamespaceAware(true); 
SAXParser saxParser = factory.newSAXParser(); 
saxParser.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA); 

saxParser.setProperty(JAXP_SCHEMA_SOURCE,new File("TXLife2.26.00.xsd")); 
MySAXHandler dh = new MySAXHandler(); 
saxParser.parse(new File("test.xml"), dh); 

Java的驗證消息稱:

CVC-複雜type.2.4.a:無效的含量被發現開始元素 '<元素>' 。

但XMLSpy的說:

元<元素>未在此位置之下元素< parent_element>

+2

錯誤消息ID的內容取決於正在使用的解析器實現。 – 2012-04-09 19:49:06

+1

你的問題是什麼?如果答案是「我該如何解決這個問題?」,答案是你是一種SOL – ControlAltDel 2012-04-09 19:49:46

+0

@Pangea無論如何解決它? – 2012-04-10 11:35:02

回答

1

你得到該錯誤消息取決於您所使用的驗證允許的。兩者都報告相同的錯誤。如果您想要一個具有更好錯誤消息的Java XSD驗證器,請嘗試撒克遜:您可能更喜歡它。但是錯誤報告是一種不精確的藝術:在設計錯誤消息時,實現者正在處理關於(a)用戶想要的內容和(b)用戶對技術理解程度的有限信息。

+0

Saxon EE具有針對XSD驗證XML的功能。有沒有免費軟件庫可以做同樣的事情? – 2012-04-10 11:34:28