Solved

how to invoke a Tagsoup from a java code???

Posted on 2007-04-01
20
374 Views
Last Modified: 2012-06-27
hi,
I want to excute this command from the command promt
java -jar tagsoup-1.0.4.jar http://moneycentral.msn.com/detail/stock_quote?Symbol=ca"; > ca.xml
into  my java code
package com.psol.xbe2;

import java.io.*;

public class Final
   
{
    public static void main (String args[]) throws IOException
           {
       
        String ur="http://moneycentral.msn.com/detail/stock_quote?Symbol=";
        BufferedReader in = new BufferedReader(new FileReader("ex1.txt"));
        String str;
        while ((str = in.readLine()) != null)
        {
             System.out.println(ur=ur+str);
           // I want to invoke java -jar tagsoup-1.0.4.jar http://moneycentral.msn.com/detail/stock_quote?Symbol=ca"; > ca.xml
        }
        in.close();
        }    
}
0
Comment
Question by:badour_ma
  • 9
  • 6
  • 5
20 Comments
 
LVL 10

Expert Comment

by:ADSLMark
ID: 18832235
0
 

Author Comment

by:badour_ma
ID: 18832295
thanks MArk,
but I have error:
com\psol\xbe2\Final.java:21: cannot resolve symbol
symbol  : method exec (java.lang.String)
location: class java.lang.System
            System.exec("java -jar tagsoup-1.0.4.jar"+ url+" > ca.xml");
                  ^

package com.psol.xbe2;

import java.io.*;
import java.util.*;
import java.lang.*;

public class Final
{
    private final static String file = "ex1.txt";
    private final static String base = "http://moneycentral.msn.com/detail/stock_quote?Symbol=";

    public static void main(String[] args)
        throws IOException
    {
        String symbol;
        BufferedReader in = new BufferedReader(new FileReader(file));
        while((symbol = in.readLine()) != null)
        {
            String url = base + symbol;
            System.out.println(url);
            System.exec("java -jar tagsoup-1.0.4.jar"+ url+" > ca.xml");

        }
            in.close();
    }
}
0
 
LVL 30

Expert Comment

by:mayankeagle
ID: 18832399
Its Runtime.getRuntime ().exec ()

And you might want to store the command "java -jar ...." in a properties file and load it from there, so that you can keep changing it on runtime without modifying your source code.
0
 
LVL 30

Expert Comment

by:mayankeagle
ID: 18832401
>> in.close();

Put that in a finally block.
0
 

Author Comment

by:badour_ma
ID: 18832450
the error fixed but
      Runtime.getRuntime ().exec("java -jar tagsoup-1.0.4.jar"+ url+" > ca.xml");
not excuted!!!
0
 
LVL 30

Expert Comment

by:mayankeagle
ID: 18832468
Where is the JAR file located? Is it in the same directory from where this class file is being run?
0
 

Author Comment

by:badour_ma
ID: 18832477
yes!!
0
 
LVL 30

Expert Comment

by:mayankeagle
ID: 18832559
What is the output you get?
0
 

Author Comment

by:badour_ma
ID: 18832572
0
 
LVL 10

Expert Comment

by:ADSLMark
ID: 18832664
use --files flag instead of the >.

java -jar tagsoup-1.0.4.jar --files http://moneycentral.msn.com/detail/stock_quote?Symbol=ca"
0
Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

 

Author Comment

by:badour_ma
ID: 18832680
I should output the reselt to ca.xml
0
 

Author Comment

by:badour_ma
ID: 18832688
also java -jar tagsoup-1.0.4.jar --files http://moneycentral.msn.com/detail/stock_quote?Symbol=ca" did not work
0
 
LVL 10

Expert Comment

by:ADSLMark
ID: 18832690
I am unfamiliar with tagsoup, but you can also redirect the standard output:

System.setOut( ... );

http://www.jcreator.com/forums/index.php?showtopic=773
0
 

Author Comment

by:badour_ma
ID: 18832763
I tried to use it but I had the following error

com\psol\xbe2\TextAreaOutputStream.java:54: <identifier> expected
System.setOut( out );
             ^
com\psol\xbe2\TextAreaOutputStream.java:57: <identifier> expected
System.setErr( out );
             ^
com\psol\xbe2\TextAreaOutputStream.java:60: <identifier> expected
System.out.println( "Hello World" );
                  ^
3 errors

/*
*
*
* @(#) TextAreaOutputStream.java
*
*/

import java.io.IOException;
import java.io.OutputStream;
import javax.swing.JTextArea;

/**
* An output stream that writes its output to a javax.swing.JTextArea
* control.
*
* @author  Ranganath Kini
* @see      javax.swing.JTextArea
*/
public class TextAreaOutputStream extends OutputStream {
    private JTextArea textControl;
   
    /**
     * Creates a new instance of TextAreaOutputStream which writes
     * to the specified instance of javax.swing.JTextArea control.
     *
     * @param control   A reference to the javax.swing.JTextArea
     *                  control to which the output must be redirected
     *                  to.
     */
    public TextAreaOutputStream( JTextArea control ) {
        textControl = control;
    }
   
    /**
     * Writes the specified byte as a character to the
     * javax.swing.JTextArea.
     *
     * @param   b   The byte to be written as character to the
     *              JTextArea.
     */
    public void write( int b ) throws IOException {
        // append the data as characters to the JTextArea control
        textControl.append( String.valueOf( ( char )b ) );
    }  
 
// Create an instance of javax.swing.JTextArea control
JTextArea txtConsole = new JTextArea();

// Now create a new TextAreaOutputStream to write to our JTextArea control and wrap a
// PrintStream around it to support the println/printf methods.
PrintStream out = new PrintStream( new TextAreaOutputStream( txtConsole ) );
 

// redirect standard output stream to the TextAreaOutputStream
System.setOut( out );

// redirect standard error stream to the TextAreaOutputStream
System.setErr( out );

// now test the mechanism
System.out.println( "Hello World" );

}
0
 
LVL 10

Accepted Solution

by:
ADSLMark earned 500 total points
ID: 18832866
package com.psol.xbe2;

import java.io.*;
import java.util.*;
import java.lang.*;

public class Final
{
    private final static String file = "ex1.txt";
    private final static String base = "http://moneycentral.msn.com/detail/stock_quote?Symbol=";

    public static void main(String[] args)
        throws IOException
    {
        //Read stock symbols
        String symbol;
        BufferedReader in = new BufferedReader(new FileReader(file));

        while((symbol = in.readLine()) != null)
        {
            //Create url
            String url = base + symbol;
            System.out.println(url);

            //Redirect standard output, execute tagsoup and restore standard output
            Process p = Runtime.getRuntime().exec("java -jar tagsoup-1.1.jar "+url);
            InputStream std = p.getInputStream();
            FileOutputStream out = new FileOutputStream(symbol+".xml");

            boolean done = false;
            while(!done)
            {
                try
                {
                    p.exitValue();
                    done = true;
                }
                catch(IllegalThreadStateException itse)
                {
                    try { Thread.sleep(20); } catch(InterruptedException ie) {}
                }

                // Do whatever you want with the output
                while (std.available() > 0)
                    out.write(std.read());
            }
        }

        in.close();
    }
}
0
 
LVL 10

Expert Comment

by:ADSLMark
ID: 18832886
Don't forget to correct the version number of the tag-soup jar.
Mark
0
 

Author Comment

by:badour_ma
ID: 18833144
Thanks aloooooot Mark :-)
0
 
LVL 30

Expert Comment

by:mayankeagle
ID: 18833162
So no points for telling Runtime.getRuntime ()....
0
 

Author Comment

by:badour_ma
ID: 18837832
Hi Mark,
Can u please explain why you do this

boolean done = false;
            while(!done)
            {
                try
                {
                    p.exitValue();
                    done = true;
                }
                catch(IllegalThreadStateException itse)
                {
                    try { Thread.sleep(20); } catch(InterruptedException ie) {}
                }

                // Do whatever you want with the output
                while (std.available() > 0)
                    out.write(std.read());
            }
        }

0
 
LVL 10

Expert Comment

by:ADSLMark
ID: 18839102
Keeps the stream from the tagsoup streaming to the file, until the process is finished.

Mark
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Suggested Solutions

There is an easy way, in .NET, to centralize the treatment of all unexpected errors. First of all, instead of launching the application directly in a Form, you need first to write a Sub called Main, in a module. Then, set the Startup Object to th…
Having just graduated from college and entered the workforce, I don’t find myself always using the tools and programs I grew accustomed to over the past four years. However, there is one program I continually find myself reverting back to…R.   So …
The viewer will learn how to implement Singleton Design Pattern in Java.
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now