Jaxp操作xml package a; import java.io.IOException; 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.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; import org.xml.sax.SAXException; public class Jaxp_impl_test { public static void main(String[] args) throws ParserConfigurationException, TransformerException, SAXException, IOException { DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance(); System.out.println("DocumentBuilderFactory 实现类为:" + fac.getClass()); // fac.setIgnoringElementContentWhitespace(true); // fac.setNamespaceAware(true); DocumentBuilder documentBuilder = fac.newDocumentBuilder(); Document document = documentBuilder.newDocument(); Element peoples = document.createElement("peoples"); Element p1 = document.createElement("people"); Element p2 = document.createElement("people"); p1.setAttribute("name", "郭靖"); p2.setAttribute("name", "黄蓉"); Element weapon1 = document.createElement("weapon"); Element weapon2 = document.createElement("weapon"); weapon1.appendChild(document.createCDATASection("<长&弓>")); weapon2.appendChild(document.createTextNode("打狗棒")); // 装配 p1.appendChild(weapon1); p2.appendChild(weapon2); peoples.appendChild(p1); peoples.appendChild(p2); document.appendChild(peoples); // document = documentBuilder.parse(new File( // "C://Java//jdk1.6.0_11//demo//nbproject//project.xml")); // 输出 TransformerFactory tf = TransformerFactory.newInstance(); System.out.println("TransformerFactory 实现类为:" + tf.getClass()); Transformer transformer = tf.newTransformer(); // 设置输出缩进 transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty( "{http://xml.apache.org/xslt}indent-amount", "4"); // 设置输出编码 transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); DOMSource source = new DOMSource(document); StreamResult result = new StreamResult(System.out); transformer.transform(source, result); // class // com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl // class // com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl // class org.apache.xerces.jaxp.DocumentBuilderFactoryImpl // class org.apache.xalan.processor.TransformerFactoryImpl // Use the system property first // try to read from $java.home/lib/jaxp.properties // Try Jar Service Provider Mechanism } } jdk1.6以上建议使用JDK默认的dom和sax实现 dom4j package a; import java.io.File; import java.io.FileWriter; import java.io.IOException; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; public class dom4j_impl_test { public static void main(String[] args) throws DocumentException { // 使用DocumentHelper.createDocument方法建立一个文档实例 Document document = DocumentHelper.createDocument(); // 使用addElement方法方法创建根元素 Element catalogElement = document.addElement("catalog"); // 使用addComment方法方法向catalog元素添加注释 catalogElement.addComment("An XML cataog"); // 使用addProcessInstruction向catalog元素增加处理指令 catalogElement.addProcessingInstruction("target", "text"); // 使用addElement方法向catalog元素添加journal子元素 Element journalElement = catalogElement.addElement("journal"); // 使用addAttribute方法向journal元素添加title和publisher属性 journalElement.addAttribute("title", "XML Zone"); journalElement.addAttribute("publisher", "Willpower Co"); // 使用addElement方法向journal元素添加article子元素 Element articleElement = journalElement.addElement("article"); // 使用addAttribute方法向article元素添加level和date属性 articleElement.addAttribute("level", "Intermediate"); articleElement.addAttribute("date", "July-2006"); // 使用addElement方法向article元素添加title子元素 Element titleElement = articleElement.addElement("title"); // 使用setText方法设置title子元素的值 titleElement.setText("Dom4j Create XML Schema 哈哈"); // 使用addElement方法向article元素添加authorElement子元素 Element authorElement = articleElement.addElement("author"); // 使用addElement方法向author元素添加firstName子元素 Element firstName = authorElement.addElement("fistname"); // 使用setText方法设置firstName子元素的值 firstName.setText("Yi"); // 使用addElement方法向author元素添加lastname子元素 Element lastName = authorElement.addElement("lastname"); // 使用setText方法设置lastName子元素的值 lastName.setText("Qiao"); XMLWriter output = null; // 输出格式化 OutputFormat format = OutputFormat.createPrettyPrint(); try { output = new XMLWriter(System.out, format); output.write(document); } catch (IOException e) { e.printStackTrace(); } finally { try { output.close(); } catch (IOException e) { } } SAXReader reader = new SAXReader(); Document doc = reader.read(new File( "C://Java//jdk1.6.0_11//demo//nbproject//project.xml")); try { output = new XMLWriter(System.out, format); output.write(doc); } catch (IOException e) { e.printStackTrace(); } finally { try { output.close(); } catch (IOException e) { } } } } 总结 如果不是非要实现w3c的xml接口,对300k左右的包不敏感的话,建议使用dom4j,开发效率高,运行效率高。