Japricot

Ruby Bibliotheken wie hpricot zeigen wie effizient man auch ohne tausende von einzelnen Bibliotheken arbeiten kann. Ich würde diese Entwicklungrichtung als "Benutzbarkeit" von Bibliotheken für Entwickler bezeichnen, jenseits des Softwareengineerings...

Deshalb habe ich diverse Bibliotheken (jDom, TagSoup und Jaxen) unter einer Fassade names Japricot zusammen geführt, um eine leichte Möglichkeiten für XML, HTML und XSL Verarbeitung zu schaffen.

Im Folgenden sind drei Bespiele zu sehen wie übersichtlich und einfach die Arbeit damit sein kann (direktes Benutzen würde mehrere hundert Zeilen Quellcode erfordern).

  1. public static void printHTML()
  2. {
  3. Japricot japricot=new Japricot();
  4. JapEntity ent=japricot.openURL("http://www.neotos.de");
  5. System.out.println(ent); //prints the whole textual contents whithout tags
  6. System.out.println(ent.toXML()); //prints the xml interpreted structure
  7. }
  8.  
  9. public static void useXpath()
  10. {
  11. Japricot japricot=new Japricot();
  12. JapEntity e= japricot.openURL("http://www.flickr.com/people/22056204@N06/");
  13. List<JapEntity> e2= e.doXPathQuery("//span[@class='nickname']");
  14. System.out.println(e2.get(0)); //prints the content of the node
  15. System.out.println(e2.get(0).getContent().getNodeName()); //prints the node name
  16. }
  17.  
  18. public static void useXSL()
  19. {
  20. String xsl=
  21. "<xsl:stylesheet version=\"1.0\" "+
  22. "xmlns:def=\"http://www.w3.org/1999/xhtml\" "+
  23. "xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" > "+
  24.  
  25. "<xsl:template match=\"/html/body\">"+
  26.  
  27. "<xsl:value-of select=\"descendant::*/.\"></xsl:value-of>"+
  28. "</xsl:template>"+
  29.  
  30. "</xsl:stylesheet>";
  31. Japricot japricot=new Japricot();
  32. JapEntity ent=japricot.openURL("http://www.neotos.de").doXSLTransformation(xsl); //if result is not a parsable xml output, it will be stick into a cdata block
  33. System.out.println(ent.toXML()); //prints the transformation as xml
  34. }

Es sei hier angemerkt, dass man jederzeit auf die hinterliegenden JDom-Objekte (Element/Node) zurückgreifen kann, denn JapEntity ist nur ein Wrapper für angenehmeres Arbeiten.

License

Dieses Projekt steht unter der GPL.

History

[Version 0.2]
Initiale Alpha-Version

[Version 0.3]
Diverse Bugfixes

AttachmentDatumSize
[file] japricot_0.03.zip18/04/09 3:34 pm809.23 KB