import org.junit.Test;
import org.w3c.dom.DOMConfiguration;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.bootstrap.DOMImplementationRegistry;
import org.w3c.dom.ls.DOMImplementationLS;
import org.w3c.dom.ls.LSOutput;
import org.w3c.dom.ls.LSSerializer;
import org.xml.sax.InputSource;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import java.io.File;
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.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class DomXml {
@Test
public void test(){
Long start = System.currentTimeMillis();
createXml();
System.out.println("运行时间:"+ (System.currentTimeMillis() - start));
}
/**
* 生成xml方法
*/
public static void createXml() {
try {
// 创建解析器工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder db = factory.newDocumentBuilder();
Document document = db.newDocument();
// 不显示standalone="no"
document.setXmlStandalone(true);
Element bookstore = document.createElement("bookstore");
// 向bookstore根节点中添加子节点book
Element book = document.createElement("book");
Element name = document.createElement("name");
// 不显示内容 name.setNodeValue("不好使");
name.setTextContent("雷神");
book.appendChild(name);
// 为book节点添加属性
book.setAttribute("id", "1");
// 将book节点添加到bookstore根节点中
bookstore.appendChild(book);
// 将bookstore节点(已包含book)添加到dom树中
document.appendChild(bookstore);
// 方式一: 保存xml文件
// 创建TransformerFactory对象
// TransformerFactory tff = TransformerFactory.newInstance();
// 创建 Transformer对象
// Transformer tf = tff.newTransformer();
// 输出内容是否使用换行
// tf.setOutputProperty(OutputKeys.INDENT, "yes");
// 创建xml文件并写入内容
// tf.transform(new DOMSource(document), new StreamResult(new File("book1.xml")));
// System.out.println("生成book1.xml成功");
// 方式二: 转字符串
// 创建TransformerFactory对象
TransformerFactory transformerFactory = TransformerFactory.newInstance();
// 创建Transformer对象
Transformer transformer = transformerFactory.newTransformer();
// 设置输出数据时换行
// tf.setOutputProperty(OutputKeys.INDENT, "yes");
// xml格式化
ByteArrayOutputStream bos = new ByteArrayOutputStream();
transformer.transform(new DOMSource(document), new StreamResult(bos));
String xmlString = bos.toString();
System.out.println(new String(prettyXml(xmlString)));
} catch (Exception e) {
e.printStackTrace();
System.out.println("生成book1.xml失败");
}
}
}