Привет мир саксонский с Java
С использованием JAR
файлы, установленные через apt для 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
для этого исполнения? Возможно, используя Saxon
а интерфейс JAXP?
также:
http://codingwithpassion.blogspot.com/2011/03/saxon-xslt-java-example.html
1 ответ
Вы найдете много простых примеров вызова преобразований с использованием Saxon из Java в загрузке saxon-ресурсов, доступной как на сайтах saxonica.com, так и на sourceforge.net.
Трудно точно понять, что вы хотите здесь, потому что ваш пример командной строки не использует Saxon для выполнения чего-либо полезного, кроме вызова парсера TagSoup и сериализации результата. Самый простой способ сделать это из Java - с помощью преобразования идентификаторов JAXP, которое работает так же хорошо со встроенным преобразователем XSLT в JDK, как и с 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), но детали зависят именно от того, что вы хотите сделать.