Informationnen aus Internet extrahieren und xml-erzeugen

jaja1

Grünschnabel
Hallo,

ich bin anfänger in Java Programmierung und möchte auf eine Web Seite bestimmte Informationnen extrahieren. Ich habe die Informationnen schon extrahiert und möchte jetzt ein xml-format erzeugen. Ich habe mit JDOM versucht, es hat nicht geklapt weil ich die Informationnen (Elementen) Manuell eingetragen habe; es soll automatisch funktionieren. Wie kann ich Automatisch eine xml mit direktem Informatiomnen aus Internet erzeugen?

Hilfe bitte schon drei Woche recherchiert und bis jetzt keine lösung

jaja1
 
Hi,

wenn Du eine XML erstellen willst, wirst Du nicht wirklich um einen eigenen Parser ( Klasse(n) zum erzeugen dieser) drum rum kommen, JDOM ist eine gute Möglichkeit eine XML zu erstellen. Mußt jedes Element selber anlegen..

hmf
 
Hallo,

wenn mit JDom die Elementen immer geschrieben werden sollen, es wäre dann zu aufwendig für mich weil ich eine xml für jede Firma auf diese Seite(http://www.faz.net/d/invest/list/firmenportraet.aspx) erzeugen muss, wobei jede Branche eine Liste von Unternehmen enthält.
nach dem ich die xml-Datei auf meine Console erzeugt habe,
wie kann ich dann diese xml auf meine Festplate speichern? mit z.b
diese Dateiname: Firmen.xml.
danke im vorraus

jaja1
 
hmm,

Deine Daten haben doch bestimmt ne Struktur? Ergo zb.

Code:
<firma>
<name>MyFirma</name>
<street>Musterweg 5</street>
</firma>

Dem Parser übergibst Du dann nur noch Deine Informationen und der kümmert sich um das Erzeugen der Elemente, bsp

Code:
myParser.createElementForFirma( MyFirma, Musterweg 5)

Du willst ja nicht wirklich für jede Firma einen Parser bzw. eine eigenes Element...sondern nur die Informationen halten...

Hast Du Dir eigentlich mal die Api-Doc von JDom zu gemühte geführt? Dort findest Du ein Beispiel zum Speichern eines Document-Object als XML - Datei...

hmf

http://www.jdom.org/docs/apidocs/
 
Hallo,
bis jetzt kein Schritt gemacht; ich habe diese Link benutzt und könnte trotzdem die erzeugte xml auf meine Festplatte nicht ausgeben. Der Ordner testdaten1 habe ich erzeugt und möchte meine xml-format darein speichern.
Ich werde mich freuen wenn jemand mich deblockieren kann.
So sieht mein code aus:

import java.io.FileWriter;
import org.jdom.Document;
import org.jdom.Element;

import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;


public class jdom
{
static Element wurzel = new Element("ListeFirma");

static org.jdom.Document doc = new Document(wurzel);

public static void main(String[] args)
{
Element firma = new Element("firma");

wurzel.addContent(firma);

firma.setAttribute("url", "http://www.faz.net/d/invest/Aktie3.aspx?isin=DE0005140008");

Element branche = new Element("branche");
branche.setText("Automobilproduktion ");
firma.addContent(branche);
Element firmenportraet = new Element("firmenportraet");
firma.addContent(firmenportraet);
Element kontakt = new Element("kontakt");

firmenportraet.addContent(kontakt);
Element firmaname = new Element("firmaname");
firmaname.setText("Deutsche Bank AG");
kontakt.addContent(firmaname);
Element strasse = new Element("strasse");
kontakt.addContent(strasse);
Element name = new Element("name");
name.setText("Taunusanlage");
strasse.addContent(name);
Element Nr = new Element("Nr");
Nr.setText("12");
strasse.addContent(Nr);
Element plz = new Element("plz");
plz.setText("D-60262");
kontakt.addContent(plz);
Element ort = new Element("ort");
ort.setText("Frankfurt");
kontakt.addContent(ort);
Element telefon= new Element("telefon");
telefon.setText("+49 (0) 69-910-00 " );
kontakt.addContent(telefon);
Element fax= new Element("fax");
fax.setText("+49 (0) 69-910-38591" );
kontakt.addContent(fax);
Element informationsblock= new Element("informationsblock");
informationsblock.setText("Die Deutsche Bank AG gehoert zu dem fuehrenden internationalen Finanzdienstleistern." );
firmenportraet.addContent(informationsblock);
Element aktionaersstruktur= new Element("aktionaersstruktur");
aktionaersstruktur.setText("Streubesitz 81,16%, Eigene Aktien 5,01%, UBS AG 4,07%" );
firma.addContent(aktionaersstruktur);
Element leitendePositionen = new Element("leitendePositionen");
firma.addContent(leitendePositionen);
Element vorstand = new Element("vorstand");
vorstand.setText("Josef Ackermann, Hugo Baenziger, Anthony Di Iorio, Hermann-Josef Lamberti " );
leitendePositionen.addContent(vorstand);
Element aufsichtsrat = new Element("aufsichtsrat");
aufsichtsrat.setText("Clemens Boersig, Karl-Gerhard Eick, Heidrun Foerster" );
leitendePositionen.addContent(aufsichtsrat);
Element beteiligungen = new Element("beteiligungen");
firma.addContent(beteiligungen);
Element unternehmen = new Element("unternehmen");
unternehmen.setText("Deutsche Steinzeug Cremer & Breuer AG");
beteiligungen.addContent(unternehmen);
Element bet = new Element("bet");
bet.setText("62,50 %" );
beteiligungen.addContent(bet);
Element unternehmen1 = new Element("unternehmen1");
unternehmen1.setText(" BHS tabletop AG ");
beteiligungen.addContent(unternehmen1);
Element bet1 = new Element("bet1");
bet1.setText("28,91 % " );
beteiligungen.addContent(bet1);
Element unternehmen2 = new Element("unternehmen2");
unternehmen2.setText(" Philipp Holzmann AG i.L. ");
beteiligungen.addContent(unternehmen2);
Element bet2 = new Element("bet2");
bet2.setText("19,51 %" );
beteiligungen.addContent(bet2);
Element unternehmen3 = new Element("unternehmen3");
unternehmen3.setText("4SC AG ");
beteiligungen.addContent(unternehmen3);
Element bet3 = new Element("bet3");
bet3.setText("19,43 %" );
beteiligungen.addContent(bet3);
Format format = Format.getPrettyFormat();
format.setEncoding("iso-8859-1");

try
{
XMLOutputter ausgang = new XMLOutputter(Format.getPrettyFormat());
ausgang.output(doc, System.out);
}
catch (java.io.IOException e){}

try {
XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
FileWriter writer = new FileWriter("C:\\Program Files\\testdaten1\\jdom.xml");
outputter.output(doc, writer);
writer.close();

} catch(java.io.IOException e){
e.printStackTrace();
}
}
}
 
Hi,

das einzige greifbare eigene Bsp. ist schon bissl alt und kann bissl mehr als Du willst, vieleicht hilft es Dir trotzdem...

Code:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

public class IOHelper
{
	
	private final static String				defaultXMLFileName = "content.xml";
	
	public final static String				defaultWorkSpaceExt = ".wks";
	
	public final static String				defaultParameterExt = ".prm";
	
	public final static String				defaultRemoteObjectExt = ".rmo";
	
	public final static File				defaultDirectory = new File( System.getProperty( "user.dir")+"/data");

	public static void save( File file, Element root)throws IOException
	{
		
		Document doc = new Document();
		doc.setRootElement( root);
		
		File zipFile = file;
		
		if( zipFile.exists())
			zipFile.delete();
		
 	 	 	 zipFile.createNewFile();
 	 	 	 
 	 	ZipOutputStream out  = new ZipOutputStream( new FileOutputStream( zipFile));
				 	 	out.setMethod(ZipOutputStream.DEFLATED);
				 	 	out.setLevel( 9);
		
	    out.putNextEntry( new ZipEntry( defaultXMLFileName));
				 	 	
	    new XMLOutputter( Format.getPrettyFormat()).output( doc, out);
	    
	    out.close();
		
	}
	
	public static Element open( File file)throws IOException
	{
		
		if( !file.exists())
			throw new FileNotFoundException();
		
		ZipInputStream in = new ZipInputStream( new FileInputStream( file));
		
		ZipEntry entry;

		try
		{
		
			while( null!=(entry=in.getNextEntry()))
				if( entry.getName().equals( defaultXMLFileName))
					return new SAXBuilder().build( in).getRootElement();
			
		}
		catch( JDOMException jdExc)
		{
			throw new IOException( jdExc.getMessage());
		}
		
		return null;
		
	}
	
	public static File checkFileExt( File file, String ext)
	{
		
		if( 0>file.getName().length()-ext.length() || 
			!file.getName().substring( file.getName().length()-ext.length()).equalsIgnoreCase( ext))
				return new File( file.getAbsolutePath()+ext);
		
		return file;
		
	}
	
}
 
Hi,
es hat immer nicht geklapt; ich bin dorf oder?
ich stelle jetzt die Frage anders vielleicht braucht man Jdom nicht.
Ich habe eine Java Klasse programmiert die bestimmte Informationen in Internet extrahiert hat, und möchte jetzt die extrahierten Informationen als xml-format ausgeben.
Wie kann ich das erledigen?
Es ist sehr wichtig
Danke
jaja1
 
Hi,

es gibt verschiedene Möglichkeiten etwas im XML-Format auszugeben JDOM, DOM4J um nur 2 Impl. zu nennen Du kannst auch das Rad neu erfinden und Dir das selber zusammen bauen...
Code:
"<firma><name>abcde>"+frimenname+"</name></firma>"
aber warum?

vieleicht könntest Du Deine Anstrengungen in Form einer Zip o.ä. mal bereitstellen

hmf

ps: für die Ausgabe in eine Datei hatte ich Dir bereits was gepostet
 
Zurück