HTML-Mail auslesen

Hi!

Ich hab gerade wenig Zeit, aber ich glaube es hakt irgendwie an deinem Namespace:

Ich habe deinen Code so modifiziert:
Java:
...
//"h" eingefügt
String sXPathExpression = "//h:html/h:body/h:div";
XPath xPathReader = XPath.newInstance(sXPathExpression);
//folgende Zeile eingefügt
xPathReader.addNamespace("h","http://www.w3.org/1999/xhtml");
Object oElement = xPathReader.selectSingleNode(document);
System.out.println("HALLO: " + oElement);
...

und dann wird das gesuchte Element ausgegeben. Wenn ich das wieder rausnehme und nur das sysout Statement stehen lasse, gibts lediglich ein "null" ...

Hoffe, das hilft dir erst mal weiter.

Sonst gucke ich später noch mal :)

Gruß,

RoCMe
 
Hi,

du netter Helfer.
es funktioniert immer noch nicht. Als Ausgabe kommt "null".
Ich werde natürlich auch noch weiterprobieren und hoffe weiter auf Hilfe.

Gruß seven.
 
Gut, noch mal ganz langsam.

Ich weiß gerade nicht genau warum, aber anscheinend verlangt jdom, dass du jedem Tag einen Namespace verpasst. D.h., was früher ein "html/body" war, wird jetzt zu einem "namespace:html/namespace:body" usw. Wie du deinen Namespace nennst, ist völlig egal.
Du erzeugst wie gewohnt deine XPath Instanz und rufst dann deren addNameSpace() Methode auf, um deinen Namespace zu setzen, z.B. so:

Java:
		String sXPathExpression = "//h:html/h:body/h:div";
		XPath xPathReader = XPath.newInstance(sXPathExpression);
		xPathReader.addNamespace("h", "http://www.w3.org/1999/xhtml");

Zumindest bei mir klappt das so! Damit wir nicht aneinander vorbei reden, gibts hier noch mal meinen kompletten Code:

Java:
public class ParseHTML {

	/** the html stuff */
	BufferedReader htmlSource;

	/** stupid constructor */
	public ParseHTML(String file) throws Exception {
		File f = new File(file);
		htmlSource = new BufferedReader(new FileReader(f));
		String line = htmlSource.readLine();
		while (line != null) {
			System.out.print(line);
			line = htmlSource.readLine();
		}
		System.out.println();
		htmlSource = new BufferedReader(new FileReader(f));
	}

	private void sevensParseMethod(BufferedReader is) throws Exception {
		SAXBuilder saxBuilder = new SAXBuilder("org.ccil.cowan.tagsoup.Parser");
		Document document = (Document) saxBuilder.build(is);
		System.out.println(document);

		String sXPathExpression = "//h:html/h:body/h:div";
		XPath xPathReader = XPath.newInstance(sXPathExpression);
		xPathReader.addNamespace("h", "http://www.w3.org/1999/xhtml");
		Object oElement = xPathReader.selectSingleNode(document);
		System.out.println("HALLO " + oElement);

		DocType doctype = new DocType("html",
				"-//W3C//DTD XHTML 1.0 Transitional//EN");
		document.setDocType((DocType) doctype);

		DocType docType = (DocType) document.getDocType();
		System.out.println("Element: " + docType.getElementName());
		System.out.println("Public ID: " + docType.getPublicID());
		System.out.println("System ID: " + docType.getSystemID());

		List ergebnis = XPath.selectNodes(document, "/html/body/div");
		System.out.println("Ergebnis: " + ergebnis);
		XPath xpath = XPath
				.newInstance("/child:html/child:body/child:div/child:table");
		xpath.addNamespace("child", "http://www.w3.org/1999/xhtml");
		List ergebnis2 = xpath.selectNodes(document);
		System.out.println("Ergebnis2: " + ergebnis2);

		String sValue = null;
		if (oElement == null) {
			// Knoten/Attribut existiert gar nicht, eventuell falscher
			// XPath-Ausdruck
		} else if (oElement.getClass().getName().equalsIgnoreCase(
				"org.jdom.Attribute")) {
			Attribute jdomAttribute = (Attribute) oElement;
			sValue = jdomAttribute.getValue();
			System.out.println("Attribut: " + sValue);
		} else if (oElement.getClass().getName().equalsIgnoreCase(
				"org.jdom.Element")) {
			Element jdomElement = (Element) oElement;
			sValue = jdomElement.getValue();
			System.out.println("Element: " + sValue);
		}
	}
public static void main(String[] arg) throws Exception {
		ParseHTML parseIt = new ParseHTML("test.html");
		parseIt.sevensParseMethod(parseIt.htmlSource);
	}
}

Die Datei "test.hml", die ich einlese hänge ich auch noch mal an (als .txt, weil ich keine .htmls anhängen darf :)), damit es da keine Missverständnisse gibt!

Meine Ausgabe sieht dann so aus:

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859-1"><style type=3D"text/css"><!--body,td,th {	font-family: Verdana, Arial, Helvetica, sans-serif;	font-size: 12px;}.Stil1 {font-size: xx-small}.Stil3 {font-size: xx-small; font-weight: bold; }body {	margin-left: 10px;}--></style></head><body><div align=3D"center"><table width=3D"600" border=3D"0" style=3D"text-align: left;">  <tr>    <td><table border=3D"0">      <tr>        <td width=3D"350">&nbsp;</td>        <td width=3D"250"><p align=3D"right"><img src=3D"d:\Daten\xxxx_MessageController\xxxxxx_Booking\xxxxxxxx-testhotel\Logo.gif"><br />        </p></td>      </tr>	  <tr>        <td width=3D"350">&nbsp;</td>        <td width=3D"250"><div align=3D"right"><br />          xxxxxxxx, den 15.12.2009</div></td>      </tr>    </table></td>  </tr>  <tr>    <td>      <strong>Buchungsbest&auml;tigung</strong></td>  </tr>  <tr>    <td>&nbsp;</td>  </tr>  <tr>    <td>Hiermit best&auml;tigen wir Ihnen Ihre verbindliche Buchung, die wir unter der <strong><br />Buchungsnummer 425041 </strong>registriert haben. Nachstehend die von Ihnen eingegebenen Buchungsdaten: </FONT></td>  </tr>  <tr>    <td>&nbsp;</td>  </tr>  <tr>    <td><hr size=3D"5" color=3D"#cddaeb" noshade ></td>  </tr>  <tr>    <td><table width=3D"100%" border=3D"0">      <tr>        <td width=3D"22%"><span class=3D"Stil3">Anreise:</span></td>        <td width=3D"32%">16.12.2009</td>        <td width=3D"17%"><span class=3D"Stil3">Abreise:</span></td>        <td width=3D"29%">23.12.2009 </td>      </tr>      <tr>        <td><span class=3D"Stil3">Buchungsnummer:</span></td>        <td>425041</td>        <td><span class=3D"Stil3">Buchungsdatum:</span></td>        <td>15.12.2009</td>      </tr>      <tr>        <td><span class=3D"Stil3">Gesamtsumme:</span></td>        <td>2,695,00 </td>        <td>&nbsp;</td>        <td>&nbsp;</td>      </tr>      <tr>        <td><span class=3D"Stil3">Alle Preise in:</span></td>        <td>EURO</td>        <td>&nbsp;</td>        <td>&nbsp;</td>      </tr>      <tr>        <td><span class=3D"Stil3">Bemerkungen:</span></td>        <td colspan=3D"3" valign=3D"top">+++ Anreise nach 18 Uhr +++ Testbemerkung</td>        </tr> <tr>        <td><span class=3D"Stil3">Anreisezeit ca.:</span></td>        <td colspan=3D"3" valign=3D"top">18:00</td>        </tr>		<tr>        <td>&nbsp;</td>        <td colspan=3D"3" valign=3D"top"></td>        </tr>    </table></td>  </tr>  <tr>    <td><hr size=3D"5" color=3D"#cddaeb" noshade></td>  </tr>  <tr>    <td><table cellspacing=3D"0" rules=3D"all" border=3D"1" style=3D"border-collapse:collapse;">	<tr>		<td>Datum</td><td>Anzahl</td><td>Zimmertyp</td><td>Einzelpreis</td><td>Einzelsumme</td>	</tr><tr>		<td>16.12.2009</td><td>1</td><td>Grp1</td><td>77,00</td><td>77,00</td>	</tr><tr>		<td>17.12.2009</td><td>1</td><td>Grp1</td><td>77,00</td><td>77,00</td>	</tr><tr>		<td>18.12.2009</td><td>1</td><td>Grp1</td><td>77,00</td><td>77,00</td>	</tr><tr>		<td>19.12.2009</td><td>1</td><td>Grp1</td><td>77,00</td><td>77,00</td>	</tr><tr>		<td>20.12.2009</td><td>1</td><td>Grp1</td><td>77,00</td><td>77,00</td>	</tr><tr>		<td>21.12.2009</td><td>1</td><td>Grp1</td><td>77,00</td><td>77,00</td>	</tr><tr>		<td>22.12.2009</td><td>1</td><td>Grp1</td><td>77,00</td><td>77,00</td>	</tr><tr>		<td>16.12.2009</td><td>2</td><td>Grp2</td><td>66,00</td><td>132,00</td>	</tr><tr>		<td>17.12.2009</td><td>2</td><td>Grp2</td><td>66,00</td><td>132,00</td>	</tr><tr>		<td>18.12.2009</td><td>2</td><td>Grp2</td><td>66,00</td><td>132,00</td>	</tr><tr>		<td>19.12.2009</td><td>2</td><td>Grp2</td><td>66,00</td><td>132,00</td>	</tr><tr>		<td>20.12.2009</td><td>2</td><td>Grp2</td><td>66,00</td><td>132,00</td>	</tr><tr>		<td>21.12.2009</td><td>2</td><td>Grp2</td><td>66,00</td><td>132,00</td>	</tr><tr>		<td>22.12.2009</td><td>2</td><td>Grp2</td><td>66,00</td><td>132,00</td>	</tr><tr>		<td>16.12.2009</td><td>4</td><td>Grp4</td><td>44,00</td><td>176,00</td>	</tr><tr>		<td>17.12.2009</td><td>4</td><td>Grp4</td><td>44,00</td><td>176,00</td>	</tr><tr>		<td>18.12.2009</td><td>4</td><td>Grp4</td><td>44,00</td><td>176,00</td>	</tr><tr>		<td>19.12.2009</td><td>4</td><td>Grp4</td><td>44,00</td><td>176,00</td>	</tr><tr>		<td>20.12.2009</td><td>4</td><td>Grp4</td><td>44,00</td><td>176,00</td>	</tr><tr>		<td>21.12.2009</td><td>4</td><td>Grp4</td><td>44,00</td><td>176,00</td>	</tr><tr>		<td>22.12.2009</td><td>4</td><td>Grp4</td><td>44,00</td><td>176,00</td>	</tr></table></td>  </tr>  <tr>    <td><hr size=3D"5" color=3D"#cddaeb" noshade></td>  </tr>  <tr>    <td> </td>  </tr>  <tr>    <td><hr size=3D"5" color=3D"#cddaeb" noshade></td>  </tr>  <tr>    <td><table width=3D"100%" border=3D"0">      <tr>        <td colspan=3D"3"><p class=3D"Stil3">Ihre Angaben<br />          <br /></p>          </td>        </tr>      <tr>        <td width=3D"45%">Frau Prof.</td>        <td width=3D"14%">&nbsp;</td>        <td width=3D"41%">&nbsp;</td>      </tr>      <tr>        <td>Anni</td>        <td>&nbsp;</td>        <td>&nbsp;</td>      </tr>      <tr>        <td>Schmidt</td>        <td><span class=3D"Stil3">Tel:</span></td>        <td>0123456789 </td>      </tr>      <tr>        <td>Bergbau GmbH</td>        <td><span class=3D"Stil3">Fax:</span></td>        <td>1234987654</td>      </tr>      <tr>        <td>Begstr.2</td>        <td><span class=3D"Stil3">Mobil:</span></td>        <td>0151987553</td>      </tr>      <tr>        <td>84467 München</td>        <td><span class=3D"Stil3">EMail:</span></td>        <td>xxxx@xxxxxxxl.de</td>      </tr>      <tr>        <td>Deutschland</td>        <td>&nbsp;</td>        <td>&nbsp;</td>      </tr>  <tr>        <td>&nbsp;</td>        <td>&nbsp;</td>        <td>&nbsp;</td>      </tr><tr>        <td colspan=3D"2"></td>        <td></td>      </tr><tr>        <td colspan=3D"2">&nbsp;</td>        <td>&nbsp;</td>      </tr><tr>        <td colspan=3D"3"></td>        </tr><tr>        <td colspan=3D"3"></td>        </tr    ></table></td>  </tr>  <tr>    <td><hr size=3D"5" color=3D"#cddaeb" noshade></td>  </tr>  <tr>    <td><table width=3D"100%" border=3D"0">      <tr>        <td colspan=3D"3"><p class=3D"Stil3">Ihr Gastgeber<br />          <br /></p>          </td>        </tr>      <tr>        <td width=3D"45%">xxx-xxxx Testhotel</td>        <td width=3D"14%"><span class=3D"Stil3">Tel:</span></td>        <td width=3D"41%">03 51 25 44 1-0 </td>      </tr>      <tr>        <td>xxxxxxxxx 22</td>        <td><span class=3D"Stil3">Fax:</span></td>        <td>xxxxx xxx xxx</td>      </tr>      <tr>        <td>111111 xxxxx</td>        <td><span class=3D"Stil3">EMail:</span></td>        <td>xxxx@xxxxxxxx.de</td>      </tr>      <tr>        <td>Deutschland</td>        <td>&nbsp;</td>        <td>&nbsp;</td>      </tr>      <tr>        <td>&nbsp;</td>        <td>&nbsp;</td>        <td>&nbsp;</td>      </tr>      <tr>        <td colspan=3D"3">&lt;br&gt;</td>      </tr>      <tr>        <td colspan=3D"3">&nbsp;</td>        </tr>    </table></td>  </tr>   <tr>    <td><hr size=3D"5" color=3D"#cddaeb" noshade></td>  </tr>  <tr>    <td><p>Eventuelle R&uuml;ckfragen richten Sie bitte direkt an Ihren Gastgeber.<br />      Diese E-Mail wurde automatisch erzeugt. Bitte antworten Sie daher nicht auf diese E-Mail.<br>      Um  Ihren Gastgeber zu kontaktieren, nutzen die bitte die EMail Adresse des Gastgebers.</p>      </td>  </tr>  <tr>    <td>  .  AGB  .------------------------------------------------------------------------</p></div>'<br />      <span class=3D"Stil3">Stornofristen</span><br />      <table cellspacing=3D"0" rules=3D"all" border=3D"1" 	</tr></table></td>  </tr></table></div></body></html>
[Document: [DocType: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">], Root is [Element: <html [Namespace: http://www.w3.org/1999/xhtml]/>]]
HALLO [Element: <div [Namespace: http://www.w3.org/1999/xhtml]/>]
Element: html
Public ID: null
System ID: -//W3C//DTD XHTML 1.0 Transitional//EN
Ergebnis: []
Ergebnis2: [[Element: <table [Namespace: http://www.w3.org/1999/xhtml]/>]]
Element:                   xxxxxxxx, den 15.12.2009      
BuchungsbestätigungHiermit bestätigen wir Ihnen Ihre verbindliche Buchung, die wir unter der Buchungsnummer 425041 registriert haben. Nachstehend die von Ihnen eingegebenen Buchungsdaten: Anreise:16.12.2009Abreise:23.12.2009 Buchungsnummer:425041Buchungsdatum:15.12.2009Gesamtsumme:2,695,00 
Alle Preise in:EUROBemerkungen:+++ Anreise nach 18 Uhr +++ TestbemerkungAnreisezeit ca.:18:00DatumAnzahlZimmertypEinzelpreisEinzelsumme16.12.20091Grp177,0077,0017.12.20091Grp177,0077,0018.12.20091Grp177,0077,0019.12.20091Grp177,0077,0020.12.20091Grp177,0077,0021.12.20091Grp177,0077,0022.12.20091Grp177,0077,0016.12.20092Grp266,00132,0017.12.20092Grp266,00132,0018.12.20092Grp266,00132,0019.12.20092Grp266,00132,0020.12.20092Grp266,00132,0021.12.20092Grp266,00132,0022.12.20092Grp266,00132,0016.12.20094Grp444,00176,0017.12.20094Grp444,00176,0018.12.20094Grp444,00176,0019.12.20094Grp444,00176,0020.12.20094Grp444,00176,0021.12.20094Grp444,00176,0022.12.20094Grp444,00176,00 Ihre Angaben                    Frau Prof.AnniSchmidtTel:0123456789 Bergbau GmbHFax:1234987654Begstr.2Mobil:015198755384467 MünchenEMail:xxxx@xxxxxxxl.deDeutschlandIhr Gastgeber                    xxx-xxxx TesthotelTel:03 51 25 44 1-0 
xxxxxxxxx 22Fax:xxxxx xxx xxx111111 xxxxxEMail:xxxx@xxxxxxxx.deDeutschland<br>Eventuelle Rückfragen richten Sie bitte direkt an Ihren Gastgeber.      Diese E-Mail wurde automatisch erzeugt. Bitte antworten Sie daher nicht auf diese E-Mail.      Um  Ihren Gastgeber zu kontaktieren, nutzen die bitte die EMail Adresse des Gastgebers.      
  .
  AGB
  .
------------------------------------------------------------------------'      Stornofristen

Falls du Fragen hast - immer her damit :)

Gruß,

RoCMe
 

Anhänge

Hi RoCMe,

Ja ... nee, etwas hab ich schon kapiert. ;)
Und langsam brauchen wir auch nicht machen, denn so alt bin ich noch nicht. ;) :D

Bin jetzt fertig und es funktioniert alles wie es soll. :)

Also, wer das gleiche Problem mal haben sollte, der schaue sich den Java-Code von RoCMe an.

Vielen Dank RoCMe für die Hilfe.

Gruß seven.
 
Zurück