Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[XML-SAX] localName, qName in DefaultHandler startElement

0 views
Skip to first unread message

Martin P

unread,
Jan 2, 2004, 3:45:20 PM1/2/04
to
Hallo,

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

--
http://www.pixelpearls.de


Stephan Cocboos

unread,
Jan 3, 2004, 5:03:42 AM1/3/04
to

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

Martin P

unread,
Jan 3, 2004, 6:39:45 AM1/3/04
to

"Stephan Cocboos" <crom...@gmx.net> schrieb im Newsbeitrag
news:bt641f$3cl$07$1...@news.t-online.com...

> > 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


Stephan Cocboos

unread,
Jan 3, 2004, 7:53:07 AM1/3/04
to
Martin P wrote:

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


0 new messages