# html -> cyberneko -> xml -> jdom .



## katja123 (8. Mai 2008)

Hallo,

ich versuche einen html-Quelltext in einen xml-text umzuwandeln mit hilfe von CyberNeko (NekoHTML), weil ich danach mit JDOM auf das File zugreifen will, um es besser durchsuchen zu können.

Ich habe mich dabei an Vorgaben von "Java ist auch eine Insel" orientiert

https://www-rz.uni-hohenheim.de/anw/programme/prg/java/tutorials/javainsel4/javainsel_13_006.htm
(ganz unten)

Mein Code (als Fragment) sieht folgendermaßen aus:


```
// imports der Übersichtlichkeit halber weggelassen

public class QinXML {
	
	InputStream quelltext;
	
	public void umwandeln() {
	
		org.cyberneko.html.parsers.DOMParser parser = 
			new org.cyberneko.html.parsers.DOMParser(); 

		try {	
			parser.parse( new InputSource(quelltext) );
		}
		catch (Exception e){
			System.out.println(e.getMessage());
			
		}

		DOMBuilder builder = new DOMBuilder(null);
		org.jdom.Document document = builder.build( parser.getDocument() );

	}
}
```

Die Errormeldung ist folgende:


```
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	The method build(Document) is undefined for the type DOMBuilder
```

Was mache ich falsch!?

Für Hilfe wäre ich sehr dankbar!


----------



## katja123 (8. Mai 2008)

Problem gelöst. 
Keine Ahnung wie, aber auf einmal funktionierte es soweit.

Kann geloescht werden.


----------



## hama (10. Aug 2009)

Hallo,

ich möchte eine HTML-Stei in eine XHTML-Seite parsen lassen, und ich habe jetzt ein Problem mit der Zeile:
org.jdom.Document document = builder.build( parser.getDocument() );
eclipse sagt: "The method build(Document) is undefined for the type DOMBuilder" .. !
Ich werde sehr dankbar, wenn Du eine Lösung oder vielleicht eine andere Vorschlag hast. 
hier ist der Java-Code:

```
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;

import org.cyberneko.html.parsers.DOMParser;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

import com.sun.org.apache.xml.internal.utils.DOMBuilder;



public class HTMLParser {
	
	public HTMLParser(){}
	
 
	
	public String html_to_xhtml() throws SAXException, IOException {
	
		String htmlFragment = "xxx.html";	
		InputStream in = new FileInputStream( htmlFragment );		
		
		// set up Neko parser, set html tag fixing routines and namespaces on
		org.cyberneko.html.parsers.DOMParser parser = new DOMParser();

		parser.setFeature(
		   "http://cyberneko.org/html/features/balance-tags", true);
		parser.setProperty(
		   "http://cyberneko.org/html/properties/names/elems", "lower");
		parser.setFeature(
		   "http://cyberneko.org/html/features/override-namespaces", true);
		parser.setFeature(
		   "http://cyberneko.org/html/features/insert-namespaces", true);
		parser.setProperty(
		   "http://cyberneko.org/html/properties/namespaces-uri", "http://www.w3.org/1999/xhtml");
		            
		// parse html fragment, fix it and return full and valid XML document
		try {	

		parser.parse(
		   new InputSource(
		   new StringReader(in.toString())));
		}
		catch (Exception e){
			System.out.println(e.getMessage());
			
		}

		DOMBuilder builder = new DOMBuilder(null);
		org.jdom.Document document = builder.build( parser.getDocument() );

		System.out.println(parser.getDocument());
		return  parser.getDocument().toString();


		

	}
	
	public static void main( String[] args ) throws SAXException, IOException { 
		HTMLParser htmlparser = new HTMLParser(); 
		htmlparser.html_to_xhtml();
	} 
	
}
```

shöne Grüße,
Hama


----------



## Noctarius (10. Aug 2009)

Die Fehlermeldung sagt doch schon, dass es eine Methode build(Document) nicht gibt. Da ist das einfachste dann ins Javadoc zu schauen wie die Parameter von build sein dürfen.


----------

