Non ho alcuna familiarità con le API di Matlab, ma vorrei sottolineare che l'uso del metodo DOM descritto da Pursuit richiederà più tempo/memoria se si desidera solo valori specifici dallo stream XML di cui si sta tornando indietro la connessione HTTP.
Mentre STAX offre l'approccio di parsing più veloce in Java, l'utilizzo dell'API può essere poco maneggevole, soprattutto se non si ha dimestichezza con Java. È possibile utilizzare SJXP che è un'astrazione estremamente sottile ontop dell'analisi STAX in Java (dichiarazione di non responsabilità: I am the author) che consente di definire i percorsi degli elementi che si desidera, quindi si dà al parser un flusso (il flusso HTTP in questo caso) e tira fuori tutti i valori per te.
Per fare un esempio, diciamo che si voleva i valori/root/Stato e/root/volume fuori dal XML esempi che hai postato, l'attuale Java sarebbe simile a questa:
// Create /root/state rule
IRule stateRule = new DefaultRule(Type.CHARACTER, "/root/state") {
@Override
public void handleParsedCharacters(XMLParser parser, String text, Object userObject) {
System.out.println("State is: " + text);
}
}
// Create /root/volume rule
IRule volRule = new DefaultRule(Type.CHARACTER, "/state/volume") {
@Override
public void handleParsedCharacters(XMLParser parser, String text, Object userObject) {
System.out.println("Volume is: " + text);
}
}
// Create the parser with the given rules
XMLParser parser = new XMLParser(stateRule, volRule);
Si può fare tutti che l'inizializzazione all'avvio del programma poi ad un certo punto più tardi, quando si elaborano il flusso dalla vostra connessione HTTP, si potrebbe fare qualcosa di simile:
parser.parser(httpConnection.getOutputStream());
o simili; quindi tutto il codice del gestore definito nelle regole verrà richiamato mentre il parser esegue il flusso di caratteri dalla connessione HTTP.
Come ho già detto non ho familiarità con Matlab e non conosco il modo corretto di "Matlab-i-fy" questo codice, ma dal primo esempio si può più o meno usare le API Java direttamente nel qual caso questa soluzione sarà più veloce e utilizzerà meno memoria per l'analisi se ciò è importante rispetto all'approccio DOM.
fonte
2012-03-04 14:23:33
Stai usando Windows? Se è così, allora posso offrirti una soluzione .NET. –