Прямо от Руководство:
Запись DOM в виде файла XML
После того, как вы сконструировали DOM (путем анализа файла XML или
строить его программно) вы часто хотите сохранить его в формате XML.
В этом разделе показано, как это сделать с помощью преобразования Xalan.
пакет.
Используя этот пакет, вы создадите объект-трансформер для подключения
DOMSource для StreamResult. Затем вы будете вызывать трансформатор
метод transform () для записи DOM в виде данных XML.
мой вывод:
thufir@dur:~/NetBeansProjects/helloWorldSaxon$
thufir@dur:~/NetBeansProjects/helloWorldSaxon$ gradle clean run
> Task :run
Jan 04, 2019 3:28:24 PM helloWorldSaxon.HandlerForXML createDocumentFromURL
INFO: http://books.toscrape.com/
Jan 04, 2019 3:28:26 PM helloWorldSaxon.HandlerForXML createDocumentFromURL
INFO: javax.xml.transform.dom.DOMResult@3cda1055
Jan 04, 2019 3:28:26 PM helloWorldSaxon.HandlerForXML createDocumentFromURL
INFO: html
BUILD SUCCESSFUL in 2s
4 actionable tasks: 4 executed
thufir@dur:~/NetBeansProjects/helloWorldSaxon$
Во-первых, я хотел бы получить более значимый вывод о том, что domResult
выглядит, выглядит или содержит. Я считаю, что более важным является итерация или обход document
ниже:
public void createDocumentFromURL() throws SAXException, IOException, TransformerException, ParserConfigurationException {
LOG.info(url.toString());
TransformerFactory transformerFactory = TransformerFactory.newInstance();
XMLReader xmlReader = XMLReaderFactory.createXMLReader("org.ccil.cowan.tagsoup.Parser");
Source source = new SAXSource(xmlReader, new InputSource(url.toString()));
DOMResult domResult = new DOMResult();
Transformer transformer = transformerFactory.newTransformer();
transformer.transform(source, domResult); //how do I find the result of this operation?
LOG.info(domResult.toString()); //traverse or iterate how?
DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
// Document document = documentBuilder.parse(); ///bzzzt, wrong
Document document = (Document) domResult.getNode();
LOG.info(document.getDocumentElement().getTagName());
}
То, что вывод "html" склоняет меня к мысли, что это html
. Желаемый вывод - это html
, но из Document
, а не String
.
Документация Oracle по написанию DOM
предназначена для разбора документа. Этот документ еще не проанализирован? Или, другими словами, как мне установить, что это или не файл XML
вообще?
Итак ... преобразуйте его снова ?
см. Также:
Java: преобразование StreamResult в DOM