大家好,又见面了,我是你们的朋友全栈君。
将生成的xml用ie浏览器打开,就可以见到漂亮的缩进的xml schema.
但是每次都这样也不方便。在java程序中,直接使用jdk的javax.xml.transform.Transformer即可完成。
而且如果有节点未被匹配,也能通过错误提示及时发现。
先贴代码如下:
import java.io.File;
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
public class XmlUtils {
/**
* @param args
*/
public static void main(String[] args) {
SaveXMLWithIndent(“test”,”demo.xml”);
}
public static void SaveXMLWithIndent(String xml,String fileName) {
try {
Document doc = getDocumentFromString(xml);
DOMSource src = new DOMSource(doc);
//StreamResult sr = new StreamResult(System.out);
StreamResult sr = new StreamResult(new File(fileName));
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();
t.setOutputProperty(OutputKeys.INDENT, “yes”);
t.setOutputProperty(“{外链网址已屏蔽}indent-amount”, “2”);
t.setOutputProperty(OutputKeys.METHOD, “xml”);
t.setOutputProperty(OutputKeys.ENCODING, “UTF-8”);
t.transform(src, sr);
}catch(Exception e) {
e.printStackTrace();
}
}
public static Document getDocumentFromString(String xml) throws Exception {
Document doc = null;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
doc = builder.parse(new InputSource(new StringReader(xml)));
return doc;
}
}
最后效果如下:
test
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160120.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...