kann mir jemand vielleicht erklären was es sich mit den zwei Strings
localName und qName im Methodenkopf von startElement der Klasse
DefaultHandler (Paket org.xml.sax.helpers) auf sich hat?
Bye,
Martin
Elemente und Attribute in einem XML-Dokument können an einen Namensraum
gebunden werden. Dies geschieht durch ein, zuvor festgelegtes Präfix
(hier: foo):
<?xml version="1.0" encoding="ISO-8859-1" ?>
<document xmlns:foo="http://www.bar.de">
<foo:text>Das ist ein Text im Namensraum http://www.bar.de</foo:text>
</document>
In einem DocumentHandler von SAX ist
qName = Der qualifizierte Name des Elements, also hier "foo:text".
localName = Der locale Name des Elements, also nur "text".
Grüsse
Stephan
> > kann mir jemand vielleicht erklären was es sich mit den zwei Strings
> > localName und qName im Methodenkopf von startElement der Klasse
> > DefaultHandler (Paket org.xml.sax.helpers) auf sich hat?
> In einem DocumentHandler von SAX ist
> qName = Der qualifizierte Name des Elements, also hier "foo:text".
> localName = Der locale Name des Elements, also nur "text".
Ahhh Danke! Das hat mir weitergeholfen!
Wäre es nicht einfacher gewesen stattdessen einfach zwei String-Variablen
für Name und Präfix zu deklarieren?
Naja... egal.
Jetzt habe ich aber noch ein Problem, und zwar das ich folgende Exception
geworfen bekomme:
<EXCEPTION>
org.xml.sax.SAXParseException: Zeichenumwandlungsfehler: "UTF-8 encoding of
character 0x001b38e8 can't be converted to Unicode." (Zeilenzahl
möglicherweise zu niedrig)
at org.apache.crimson.parser.InputEntity.fatal(Unknown Source)
at org.apache.crimson.parser.InputEntity.fillbuf(Unknown Source)
at org.apache.crimson.parser.InputEntity.isXmlDeclOrTextDeclPrefix(Unknown
Source)
at org.apache.crimson.parser.Parser2.maybeXmlDecl(Unknown Source)
at org.apache.crimson.parser.Parser2.parseInternal(Unknown Source)
at org.apache.crimson.parser.Parser2.parse(Unknown Source)
at org.apache.crimson.parser.XMLReaderImpl.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
</EXCEPTION>
Wenn ich versuche ein XHTML-Dokument zu parsen:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
Bis jetzt hatte ich immer gedacht man könne XHTML problemlos mit
XML-Techniken bearbeiten.
Meine main-Methode sieht wie folgt aus:
<SOURCE>
public static void main(String[] args){
DefaultHandler handler = new HTMLCrawler();
// use of a default non-validating parser
SAXParserFactory factory= SAXParserFactory.newInstance();
try{
// Parse the input
SAXParser saxParser = factory.newSAXParser();
saxParser.parse(new File(file), handler); // hier wird die Exception
geworfen!
}catch(Throwable t){
t.printStackTrace();
}
System.exit(0);
}
</SOURCE>
Wennn mir jemand schon einmal verraten könnte, wie ich an die Analyse dieses
Fehlers gehe, dann wäre mir schon geholfen.
Allerdings weiss ich momentan nicht wo ich ansetzen soll.
Bye,
Martin
Verwendest Du Sonderzeichen in Deinem XHTML-Dokument, die nicht als
Entities referenziert werden? (ä,ö,ü,ß, usw.)
Versuche folgende XML-Deklaration (Encoding!!):
<?xml version="1.0" encoding="ISO-8859-1"?>
...
Ein XML-Dokument muss zwar nicht, sollte aber immer eine solche
XML-Deklaration besitzen!
Grüsse
Stephan