大佬教程收集整理的这篇文章主要介绍了Java 8中的漂亮打印XML,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想这个问题与原始文件中的
(即只有空白的文本节点)有关。您应该尝试在解析后使用以下代码以编程方式删除它们。如果不删除它们,transformer
它将保留它们。
original.getdocumentElement().normalize();
XPathExpression xpath = XPathFactory.newInstance().newXPath().compile("//text()[normalize-space(.) = '']");
NodeList blankTextNodes = (NodeList) xpath.evaluate(original, XPathConstants.NODESET);
for (int i = 0; i < blankTextNodes.getLength(); i++) {
blankTextNodes.item(i).getparentNode().removeChild(blankTextNodes.item(i));
}
我有一个存储为DOM文档的XML文件,我想将其漂亮地打印到控制台,最好不使用外部库。
我知道这个问题已经在这个网站上问了很多遍,但是以前的答案都没有对我有用。 我正在使用Java
8,所以也许这是我的代码与以前的问题有所不同的地方?我也尝试过使用从Web上找到的代码手动设置变压器,但是这只是引起了not found
错误。
这是我的代码,当前仅在控制台左侧的新行上输出每个xml元素。
@H_772_6@import java.io.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMsource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.xml.sax.Inputsource;
import org.xml.sax.SAXException;
public class Test {
public Test(){
try {
//java.lang.System.setProperty("javax.xml.transform.TransformerFactory","org.apache.xalan.xsltc.trax.TransformerFactoryImpl");
DocumentBuilderFactory dbFactory;
DocumentBuilder dBuilder;
Document original = null;
try {
dbFactory = DocumentBuilderFactory.newInstance();
dBuilder = dbFactory.newDocumentBuilder();
original = dBuilder.parse(new Inputsource(new InputStreamReader(new FileInputStream("xml Store - Copy.xml"))));
} catch (SAXException | IOException | ParserConfigurationException E) {
e.printStackTrace();
}
StringWriter StringWriter = new StringWriter();
StreamResult xmlOutput = new StreamResult(StringWriter);
TransformerFactory tf = TransformerFactory.newInstance();
//tf.setAttribute("indent-number",2);
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.METHOD,"xml");
transformer.setOutputProperty("{@R_450_10107@://xml.apache.org/xslt}indent-amount","4");
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,"no");
transformer.setOutputProperty(OutputKeys.INDENT,"yes");
transformer.setOutputProperty(OutputKeys.ENCODING,"UTF-8");
transformer.transform(new DOMsource(original),xmlOutput);
java.lang.System.out.println(xmlOutput.getWriter().toString());
} catch (Exception eX) {
throw new RuntimeException("Error converTing to String",eX);
}
}
public static void main(String[] args){
new Test();
}
}
以上是大佬教程为你收集整理的Java 8中的漂亮打印XML全部内容,希望文章能够帮你解决Java 8中的漂亮打印XML所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。