使用通过apt安装的JAR
文件进行Saxon-HE
并tagsoup
解析html
是一种方式:
thufir@dur:~/saxon$
thufir@dur:~/saxon$ java -cp /usr/share/java/Saxon-HE-9.8.0.14.jar:/usr/share/java/tagsoup-1.2.1.jar net.sf.saxon.Query -x:org.ccil.cowan.tagsoup.Parser -qs:doc\(\'http://books.toscrape.com/\'\)
<?xml version="1.0" encoding="UTF-8"?><!--[if lt IE 7]> <html lang="en-us" class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--><!--[if IE 7]> <html lang="en-us" class="no-js lt-ie9 lt-ie8"> <![endif]--><!--[if IE 8]> <html lang="en-us" class="no-js lt-ie9"> <![endif]--><!--[if gt IE 8]><!--><html xmlns="http://www.w3.org/1999/xhtml" xmlns:html="http://www.w3.org/1999/xhtml" class="no-js" lang="en-us"><!--<![endif]--><head><title>
All products | Books to Scrape - Sandbox
..
<!-- Version: N/A -->
thufir@dur:~/saxon$
thufir@dur:~/saxon$
我将如何从Java中做到这一点?尤其是从Saxon
导入什么来执行此操作? Perhaps使用Saxon
和JAXP界面?
还:
http://codingwithpassion.blogspot.com/2011/03/saxon-xslt-java-example.html
答案 0 :(得分:1)
您可以在saxonica.com和sourceforge.net网站上的saxon-resources下载中找到许多使用Java的Saxon调用转换的简单示例。
很难确切地知道您在这里想要什么,因为您的命令行示例没有使用Saxon来执行除调用TagSoup解析器和序列化结果以外的任何有用的事情。从Java做到这一点的最简单方法是使用JAXP身份转换,该转换在JDK中的内置XSLT转换器和Saxon中的运行一样好:
TransformerFactory factory = TransformerFactory.newInstance();
XMLReader xmlReader = XMLReaderFactory.createXMLReader("org.ccil.cowan.tagsoup.Parser");
Source input = new SAXSource(xmlReader, new InputSource("http://books.toscrape.com/"));
Result output = new StreamResult(System.out);
factory.newTransformer().transform(input, output);
如果您想添加一些XSLT或XQuery处理,那当然是完全可行的(我将始终使用s9api API来用于Saxon,但您也可以使用JAXP或XQJ),但是具体取决于您要的内容