Salve a tutti, ho provato in tanti modi a creare un parser per l'estrazione di info da files xml.
Ma tutti mi riportano lo stesso errore :
Codice PHP:
org.xml.sax.SAXParseException: The markup in the document following the root element must be well-formed.
il mio file xml è di questa forma
Codice PHP:
<title>Aikido</title>
<id>751</id>
<revision> <id>94413171</id>
<timestamp>2006-12-15T01:13:01Z</timestamp>
<contributor>
<id>410898</id>
<username>PRehse</username>
</contributor>
<text xml:space="preserve">{{Infobox_martial_art
| logo =
| logocaption =
| logosize =
| image = G Blaize Kokiu Nague 2.JPG
| imagecaption = An aikido throw being practiced. ''Nage'' maintains balance and structure to throw ''uke'', while ''uke'' safely takes a forward roll (''zenp kaiten'').
| imagesize = 300px
| name = Aikido
| aka =
| style = [[Grappling]] and strikes
| country = {{flagicon|JPN}} [[Japan]]
| creator = [[Morihei Ueshiba]]
| parenthood = Modern
| famous_pract =
| olympic = no
| website = }}
</text>
</revision>
Il mio codice java riesce (a volte) solo a prendere il contenuto del primo tag e poi mi dà l'errore.
L'ho provato con altri dati xml e funziona alla grande.
esempio con questo funziona
Codice PHP:
<libri>
<libro>
<autore>pippo</autore>
<titolo>primo titolo</titolo>
<costo>11</costo>
</libro>
<libro>
<autore>sandro</autore>
<titolo>secondo titolo</titolo>
<costo>34</costo>
</libro>
</libri>
Come è possibile tutto ciò?
Questo è il mio codice
Codice PHP:
import java.io.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
public class Parser extends DefaultHandler {
public void parse(File file) {
try {
SAXParserFactory parserFactory = SAXParserFactory.newInstance();
parserFactory.setValidating(false);
parserFactory.setNamespaceAware(false);
SAXParser parser = parserFactory.newSAXParser();
parser.parse(file, this);
} catch (IOException exception) {
}
catch (SAXException exception) {
}
catch (ParserConfigurationException exception) {
}
}
public void characters(char[] ch, int start, int length) {
String s = new String(ch, start, length);
}
public void endDocument() {
System.out.println("end document");
}
public void endElement(String url, String localName, String qName) {
System.out.println("end element");
}
public void startDocument() {
System.out.println("start document: ");
}
public void startElement(String uri, String localName, String qName,
Attributes attributes) {
System.out.println("start element: " + qName);
}
public static void main(String[] args) {
Parser p = new Parser();
p.parse(new File("dati.xml"));
}
}
Grazie.