View Full Version : [JAVA] un parser XML
trapanator
07-10-2004, 15:45
Sapete consigliarmi uno?
Possibilmente con qualche esempio.
Grazie ;)
texerasmo
07-10-2004, 15:57
// ti restiuisce outpu di trasformazione
outputTrs = creaHtml(xmlfile,xslfile);
<%!
public String creaHtml(String fileXml,String xslFile)
{
StringWriter fileHtml = new StringWriter();
try
{
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer(new StreamSource(xslFile));
//transformer.setParameter("prova",xsl_par);
transformer.transform(new StreamSource(fileXml), new StreamResult(fileHtml));
}
catch(Exception exc)
{
return "Errore:"+ exc.getMessage();
}
return fileHtml.toString();
}
%>
trapanator
08-10-2004, 09:05
Originariamente inviato da texerasmo
// ti restiuisce outpu di trasformazione
outputTrs = creaHtml(xmlfile,xslfile);
<%!
public String creaHtml(String fileXml,String xslFile)
{
StringWriter fileHtml = new StringWriter();
try
{
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer(new StreamSource(xslFile));
//transformer.setParameter("prova",xsl_par);
transformer.transform(new StreamSource(fileXml), new StreamResult(fileHtml));
}
catch(Exception exc)
{
return "Errore:"+ exc.getMessage();
}
return fileHtml.toString();
}
%>
Interessante, pero' mi servirebbe come accedere al valore di un elemento... ad esempio:
<...>
<service>
<name>Prova</name>
<...>
</service>
vorrei il valore di <name> :)
texerasmo
08-10-2004, 09:26
sul forum dovrebbe esserci gia quaḷcosa sollevai tempofa io la stessa questione
texerasmo
08-10-2004, 09:27
/*
IMPORTIAMO I PACKAGE NECESSARI PER
LAVORATE CON GLI XML
/**/
import org.apache.xerces.parsers.DOMParser;
import org.xml.sax.ErrorHandler;
import org.w3c.dom.*;
import java.io.IOException;
public class LeggiXML
{
/*
COSTRUTTORE CON UN PARAMETRO
CHE RAPPRESENTA IL FILE DA LEGGERE
/**/
public LeggiXML(String xmlFile)
{
/*
ANCHE PER LEGGERE UN XML DOBBIAMO
UTILIZZARE IL PARSER XERCES QUINDI
ISTANZIAMO UN OGGETTO DOMParser
/**/
DOMParser parser = new DOMParser();
try
{
/*
IMPOSTIAMO I PARAMETRI PER IL PARSER
/**/
parser.setFeature("http://xml.org/sax/features/validation", true);
}catch (Exception e)
{
System.err.println (e);
}
try
{
/*
PARSIAMO IL DOCUMENTO CON XERCES
/**/
parser.parse(xmlFile);
/*
ISTANZIAMO UN OGGETTO DOCUMENT
/**/
Document document = parser.getDocument();
/*
PASSIAMO IL NOSTRO DOCUMENT AL METODO
leggi() CHE LO SCORRE RICORSIVAMENTE
/**/
leggi(document,0);
} catch (Exception e)
{
System.err.println(e);
}
}
/*
METODO CHE SCORRE RICORSIVAMENTE
TUTTI I NODI DEL DOCUMENTO XML. IN
ENTRATA PRENDE L'OGGETTO Node DA
PARSARE ED UN INTERO CHE RAPPRESENTA
IL LIVELLO
/**/
private void leggi(Node node, int numLevelsDeep)
{
int type = node.getNodeType();
if (type == Node.ELEMENT_NODE)
{
/*
SE IL NODO RILEVATO HA VALORE <param-name>
IL VALORE IN ESSO CONTENUTO VIENE STAMPATO
A VIDEO
/**/
if("param-name".equals(node.getNodeName()))
{
System.out.print("\n"+node.getFirstChild().getNodeValue());
/*
SE IL NODO RILEVATO HA VALORE <param-value>
IL VALORE IN ESSO CONTENUTO VIENE STAMPATO
A VIDEO
/**/
}else if("param-value".equals(node.getNodeName()))
{
System.out.print("\n"+node.getFirstChild().getNodeValue());
}
}
/*
SE IL NODO HA NODI FIGLI RICHIAMIAMO
IL METODO leggi() PASSANDOGLI IL NODO
ED IL NUMERO DI LIVELLO CORRENTE + 1
/**/
NodeList children = node.getChildNodes();
if (children != null)
{
for (int i=0; i<children.getLength(); i++)
{
leggi(children.item(i), numLevelsDeep+1);
}
}
}
/*
METODO MAIN DI ESECUZIONE
/**/
public static void main(String[] args)
{
LeggiXML leggi = new LeggiXML(args[0]);
}
}
prova cosi
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.