xml文档的解析和生成(一)
xml文档主要有两种解析方式,DOM接口或SAX接口解析。
Dom解析示例: 1.建立DocumentBuilderFactory 2.建立DocumentBuilder 3.建立Document 4.建立NodeList 5.进行xml信息读取
xml文件放在D盘,为dom_demo_02.xml <?xml version="1.0" encoding="GBK"?>
解析代码为:
生成xml文件代码: package com.hbut.xml; 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; /** * 生成xml文件 * @author win * */ public class DomDemo03 { public static void main(String[] args) { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = null; try { builder =factory.newDocumentBuilder(); } catch (ParserConfigurationException e) { e.printStackTrace(); } Document doc = null; doc = builder.newDocument(); //建立各个节点 Element addresslist = doc.createElement("addresslist"); Element linkname = doc.createElement("linkname"); Element name = doc.createElement("name"); Element email = doc.createElement("email"); //设置各个操作节点,为节点添加文本 name.appendChild(doc.createTextNode("李兴华")); email.appendChild(doc.createTextNode("21223232@qq.com")); //设置节点关系 linkname.appendChild(name); linkname.appendChild(email); addresslist.appendChild(linkname); doc.appendChild(addresslist); //输出文档到文件中 TransformerFactory tf = TransformerFactory.newInstance(); Transformer t = null; try { t = tf.newTransformer(); } catch (TransformerConfigurationException e) { e.printStackTrace(); } t.setOutputProperty(OutputKeys.ENCODING,"GBK"); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new File("D:"+File.separator+"output.xml")); try { t.transform(source,result); } catch (TransformerException e) { e.printStackTrace(); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |