[jdom-interest] XMLOutputter Problem?

Jools Enticknap jools at jools.org
Wed Aug 23 07:21:17 PDT 2000


Hi John

Perhaps your problem is that there is no-one reading on the other end of
the 
pipe you have just created ?

Create the thread which will read the pipe **before** you call
xmlOut.output()
and it might just work.



--Jools

"John L. Webber - intraWeb IT GmbH" wrote:
> 
> I'm having a problem using XMLOutputter in connection with a pair of
> PipedStreams. Basically what I'm trying to do is convert the output to a
> string which I then display in a separate frame.
> 
> The problem seems to occur when my JDOM document exceeds a minimum size.
> If the base XML file is only 12 lines or so, there's no problem, but
> with the file shown below which is somewhat longer, XMLOutputter seems
> to freeze indefinitely.




> 
> Has anyone run into a similar problem? I checked the list archives to no
> avail.
> 
> Java code and XML file below.
> 
> Thanks,
> 
> John
> 
> >>XML file<<
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE unitset SYSTEM "unitset.dtd">
> 
> <unitset>
>   <unit level="0" name="Jentro" type="unknown">
>     <unit level="1" name="Lab" type="unknown">
>       <unit level="2" name="Oldie" type="kiosk" x="12" y="23">
>         <options ip="192.1.1.150" />
>       </unit>
>       <unit level="2" name="Netbreeze" type="kiosk" x="44" y="55">
>         <options ip="192.1.1.171" />
>       </unit>
>     </unit>
>     <unit level="1" name="Graphics1" type="unknown" />
>     <unit level="1" name="Graphics2" type="unknown" />
>     <unit level="1" name="Graphics3" type="unknown" />
>     <unit level="1" name="Graphics4" type="unknown" />
>     <unit level="1" name="Graphics5" type="unknown" />
>     <unit level="1" name="Graphics6" type="unknown" />
>     <unit level="1" name="Graphics7" type="unknown" />
>     <unit level="1" name="Graphics8" type="unknown" />
>     <unit level="1" name="Graphics9" type="unknown">
>       <unit level="2" name="Graphics10" type="kiosk" x="1" y="2">
>         <options ip="1.1.1.1" />
>       </unit>
>       <unit level="2" name="Graphics11" type="kiosk" x="1" y="2">
>         <options ip="1.1.1.2" />
>       </unit>
>       <unit level="2" name="Graphics12" type="kiosk" x="1" y="2">
>         <options ip="1.1.1.3" />
>       </unit>
>       <unit level="2" name="Graphics13" type="kiosk" x="1" y="2">
>         <options ip="1.1.1.4" />
>       </unit>
>       <unit level="2" name="Graphics14" type="kiosk" x="1" y="2">
>         <options ip="1.1.1.5" />
>       </unit>
>       <unit level="2" name="Graphics15" type="kiosk" x="1" y="2">
>         <options ip="1.1.1.6" />
>       </unit>
>       <unit level="2" name="Graphics16" type="kiosk" x="1" y="2">
>         <options ip="1.1.1.7" />
>       </unit>
>       <unit level="2" name="Graphics17" type="kiosk" x="1" y="2">
>         <options ip="1.1.1.8" />
>       </unit>
>       <unit level="2" name="Graphics18" type="kiosk" x="1" y="2">
>         <options ip="1.1.1.9" />
>       </unit>
>       <unit level="2" name="Graphics19" type="kiosk" x="1" y="2">
>         <options ip="1.1.1.10" />
>       </unit>
>     </unit>
>   </unit>
> </unitset>
> 
> >>Java code (excerpt)>>
> 
>   public void displayDoc()
>   throws IOException
> {
>   final StringBuffer buffer = new StringBuffer();
>   XMLOutputter xmlOut = new XMLOutputter();
>   PipedOutputStream pipedOut = new PipedOutputStream();
>   PipedInputStream pipedIn = new PipedInputStream(pipedOut);
>   final BufferedReader reader = new BufferedReader(new
> InputStreamReader(pipedIn));
>   xmlOut.output(doc, pipedOut);
>   //The next line is never reached!
>   System.out.println("Output finished");
>   pipedOut.close();
>   Runnable readerThread = new Runnable() {
>       public void run() {
>         String temp;
>         try
>         {
>           while ( (temp = reader.readLine()) != null)
>           {
>              buffer.append(temp);
>           }
>         }
>         catch (IOException io) { }
>       }
>    };
>    Thread t = new Thread(readerThread);
>    t.start();
>    String xmlResult = buffer.toString();
>    System.out.println(xmlResult);
> 
> --
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> intraWeb Information Technologies GmbH
> John L. Webber, Software Development
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Peter-Henlein-Strasse 28-30, 85540 Haar/Munich, Germany
> Tel.:  +49 89 462 385 0     (switchboard)
> Tel.:  +49 89 462 385 38    (direct)
> Fax:   +49 89 462 385 29
> mailto:John.Webber at intraWeb.de
> http://www.intraWeb.de
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> _______________________________________________
> To control your jdom-interest membership:
> http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@yourhost.com



More information about the jdom-interest mailing list