PDA

Visualizza la versione completa : [JAVA/JSP] Validare documento XML


tcc
14-01-2006, 17:36
Salve a tutti ho il seguente codice per validare un documento xml attraverso una dtd/schemaxml.



<%@ page language="Java" %>
<%@ page import="org.w3c.dom.*"%>
<%@ page import="org.apache.xerces.parsers.*" %>
<%@ page import="org.xml.sax.*"%>


<%@ page import="javax.xml.parsers.*" %>

<%@ page import="javax.xml.transform.*"%>
<%@ page import="javax.xml.transform.dom.DOMSource"%>
<%@ page import="javax.xml.transform.stream.StreamResult"%>
<%@ page import="java.io.*" %>



<HEAD>
<TITLE>Mia Risposta</TITLE>
</HEAD>
<BODY>

<%!
public class ValidatingDOM
{
// Costruttore
public ValidatingDOM (String xmlFile)
{


DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// force the parser to validate the document
factory.setValidating(true);
Document document = null;
try {
// builder initialisation
DocumentBuilder builder = factory.newDocumentBuilder();
builder.setErrorHandler(null);
// launch the parsing and create DOM structure
document = builder.parse(xmlFile);
} catch (Exception e) {
e.printStackTrace();
}

}



}
%>


<%

String xmlFile="C:/Windows/desktop/web/forum.xml";


ValidatingDOM validatingDOM = new ValidatingDOM (xmlFile);



%>


Mia pagina JSP</p>
</BODY>
</HTML>



FORUM.XML:




<?xml version="1.0"?>

<!DOCTYPE forum SYSTEM "forum.dtd">


<forum>
<post>
<utente>Luca Ruggiero</utente>
<localita>Roma</localita>
<data>23/12/05</data>
<messaggio>CIAO!!!!</messaggio>
</post>
</forum>



FORUM.DTD:


<!ELEMENT forum (post+)>

<!ELEMENT post ( utente,titolo,localita,data, messaggio)>


<!ELEMENT utente ( #PCDATA )>
<!ELEMENT titolo ( #PCDATA )>
<!ELEMENT localita ( #PCDATA )>
<!ELEMENT data ( #PCDATA )>
<!ELEMENT messaggio ( #PCDATA )>





ADESSO non capisco perchè non chiamare errore dato che nel mio documento XML,non c'è
il marcatore <titolo></titolo> è sbagliato qualcosa nel codice??Si valida così un documento
xml???GRAZIE

unomichisiada
14-01-2006, 20:13
Probabilmente il parser che stai usando per default non fa la validazione e devi attivarla con un'apposita property,documentati :ciauz:

Loading