Det kan meget vel være, at end document først skal kaldes, når den får en
EOF,
er dog ikke sikker, siden jeg ikke lige har læst specifikationerne igennem
:)
Men du får jo at vide, når du får end på dit root tag, så det eneste der kan
være
tilbage i dokumentet er kommentarer.
Du kan evt. prøve at lave samme trick, bare bruge xerces istedetfor, for at
se
hvordan den klarer din problemstilling
/Lars Hansen
"Morten Green Hermansen" <mortengh@fanitas.com> wrote in message
news:3B6039B6.2040700@fanitas.com...
> Jeg prøver lige igen. Mit tidligere spørgsmål stank
>
> Tag lige en kikker på følgende kode (kun til jdk1.4):
>
> ----------------------------------------------
> import java.io.*;
> import org.xml.sax.*;
> import org.xml.sax.helpers.*;
> import javax.xml.parsers.*;
>
> public class Echo extends DefaultHandler
> {
> public static void main(String argv[])
> {
> SAXParserFactory factory = SAXParserFactory.newInstance();
>
> try
> {
> SAXParser saxParser = factory.newSAXParser();
> saxParser.parse(System.in, new Echo());
> }
> catch(Throwable t)
> {
> t.printStackTrace();
> }
> }
>
> public void startDocument() throws SAXException
> {
> System.out.println("START DOCUMENT");
> }
>
> public void endDocument() throws SAXException
> {
> System.out.println("END DOCUMENT");
> }
>
> public void startElement(String namespaceURI, String lName,
> String qName,
> Attributes attrs) throws SAXException
> {
> System.out.println("START: " + qName);
> }
>
> public void endElement(String namespaceURI, String sName,
> String qName)
> throws SAXException
> {
> System.out.println("END: " + qName);
> }
> }
> -----------------------------------------------
>
> Hvis jeg nu kører:
> echo "<?xml version='1.0' encoding='us-ascii'?><I><O></O></I>" | java Echo
>
> Får jeg:
> (* er det jeg skriver, # er det computeren skriver)
>
> # START DOCUMENT
> # START: I
> # START: O
> # END: O
> # END: I
> # END DOCUMENT
>
> Som forvented.
>
> Kører jeg (og indtaster selv): java Echo
> (* er det jeg skriver, # er det computeren skriver)
>
> * <?xml version='1.0' encoding='us-ascii'?>
> # START DOCUMENT
> * <I>
> * <O>
> * </O>
> * </I>
> (her trykker jeg CRTL-d (End-of-file))
> # START: I
> # START: O
> # END: O
> # END: I
> # END DOCUMENT
>
> Se! Det beviser at parseren kun kører efter at den har fået end of file.
> Det jeg vil have er at den skal parse videre så snart den har noget
> mere. Det er jo det der gør en seriel parser forskellig fra en DOM parser.
> Det skal se sådan ud:
>
> * <?xml version='1.0' encoding='us-ascii'?>
> # START DOCUMENT
> * <I>
> # START: I
> * <O>
> # START: O
> * </O>
> # END: O
> * </I>
> # END: I
> (her trykker jeg CRTL-d (End-of-file))
> # END DOCUMENT
>
> Ellers kan jeg først få parseren til at arbejde når den har hele XML
> dokumentet.
>
> Hvorfor sker dette? Gud hvor jeg ikke håber at det bare er sådan
> Nu ikke noget med at den kun flusher til sidst, for det gør den efter
> hvert linie skift, jo. Ellers havde den jo heller ikke fået "<?xml..?>"
> og det har den, for den skriver jo "START DOCUMENT" ud efter første
> linie skift.
>
> Hjææælp
> - Morten Green Hermansen, Fanitas
>