【发布时间】:2019-01-04 23:39:39
【问题描述】:
直from说明书:
将 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。
关于写出DOM 的Oracle 文档是解析文档。该文档是否尚未解析? 或者,换句话说,我如何确定它是否是 XML 文件?
所以.....再次改造它?
另见:
【问题讨论】:
标签: java xml dom xml-parsing saxon