DOM创建及解析XML文件
2013-06-24 00:00
357 查看
public interface XmlDocument { /*** * 创建XML文件 * @param filePath 文件路径 */ public void createXml(String filePath); /*** * 解析XML文件 * @param filePath 文件路径 */ public void analyzeXml(String filePath); } import java.io.FileOutputStream; import java.io.PrintWriter; 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.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class DomDemo implements XmlDocument { private Document document; private String filePath; public void init() { try { DocumentBuilderFactory df=DocumentBuilderFactory.newInstance(); DocumentBuilder db=df.newDocumentBuilder(); this.document=db.newDocument(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public void createXml(String filePath) { Element root=this.document.createElement("employees"); this.document.appendChild(root); Element employee=this.document.createElement("employee"); Element name=this.document.createElement("name"); name.appendChild(this.document.createTextNode("你好")); employee.appendChild(name); Element sex=this.document.createElement("sex"); sex.appendChild(this.document.createTextNode("m")); employee.appendChild(sex); Element age = this.document.createElement("age"); age.appendChild(this.document.createTextNode("22")); employee.appendChild(age); root.appendChild(employee); try { TransformerFactory tff=TransformerFactory.newInstance(); Transformer tf=tff.newTransformer(); DOMSource doms=new DOMSource(document); tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); tf.setOutputProperty(OutputKeys.INDENT, "yes"); PrintWriter pw=new PrintWriter(new FileOutputStream(filePath)); StreamResult sr=new StreamResult(pw); tf.transform(doms, sr); System.out.println("XML创建成功!"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public void analyzeXml(String filePath) { try { DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); DocumentBuilder db=dbf.newDocumentBuilder(); Document dt=db.parse(filePath); NodeList employees=dt.getChildNodes(); for(int i=0;i<employees.getLength();i++) { Node employee=employees.item(i); NodeList employeeInfo=employee.getChildNodes(); for(int j=0;j<employeeInfo.getLength();j++) { Node node=employeeInfo.item(j); NodeList employeeMeta=node.getChildNodes(); for(int k=0;k<employeeMeta.getLength();k++) { System.out.println(employeeMeta.item(k).getNodeName() + ":" + employeeMeta.item(k).getTextContent()); } } } System.out.println("XML解析成功!"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { //DomDemo dd=new DomDemo(); //dd.init(); //dd.createXml("F:/dom123.xml"); //dd.parserXml("F:/dom123.xml"); }
注意事项:创建XML文件,如果为UTF-8编码,要把eclipse编码设置为UTF-8,否则创建的XML文件编码会有问题,解析也会出问题 }
相关文章推荐
- 使用PHP DOM-XML创建和解析XML文件
- 使用PHP DOM-XML创建和解析XML文件
- Android中DOM解析xml文件
- Android -使用DOM(文档对象模型)解析XML文件
- DOM解析XML文件例子
- python创建和解析xml文件
- Dom解析xml文件
- 使用Dom生成xml文件和解析xml文件
- Android 创建与解析XML(二)—— Dom方式
- Android基础的xml文件创建,解析,以及安卓下的消息机制
- Android数据存储——2.文件存储_C_DOM解析XML文档
- DOM解析XML文件1-ArrayAdapter_simple_list_item_1布局
- DOM解析XML的文件属性名和属性值、节点名和节点值
- Dom解析XML文件输出的<text>是怎么回事
- cocos2dx使用tinyxml创建和解析xml文件
- Android -使用DOM(文档对象模型)解析XML文件
- java-Dom创建和解析xml
- Dom解析XML文件具体用法
- DOM解析xml文件
- PHP DOM方式 操作XML 解析、创建、修改