以下代码详细展示了dom方法如何生成xml文件,其中需注意两点
1.为子节点设置文本时需用setTextContent方法,不用setNodeValue(返回null)
2.在将dom树转换为xml文件时需留意换行操作(否则xml文件生成后无空格换行)
package dom; import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; public class dom { public static void main(String[] args) { //创建DocumentBuildFactory对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { //创建DocumentBuild对象 DocumentBuilder db = dbf.newDocumentBuilder(); //调用DocumentBuild实例的newDocument方法创造dom树 Document document = db.newDocument(); //创建根节点 Element rootNode = document.createElement("bookstore"); //创建子节点 Element node = document.createElement("book"); //为子节点设置属性 node.setAttribute("id", "1"); //创建子节点name Element name=document.createElement("name"); //为name节点添加文本 name.setTextContent("活着"); //将name节点添加到子节点(book)节点中 node.appendChild(name); //将子节点添加到根节点中 rootNode.appendChild(node); //将根节点(包含子节点)添加到dom树中 document.appendChild(rootNode); //将现有结构转换为xml文件 //创建TransformerFactory对象 TransformerFactory tff = TransformerFactory.newInstance(); //创建Transformer对象 Transformer tf = tff.newTransformer(); //设置换行 tf.setOutputProperty(OutputKeys.INDENT, "yes"); //调用Transformer对象的transform方法,创建xml文件 tf.transform(new DOMSource(document), new StreamResult(new File("books.xml"))); } catch (TransformerException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }