首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

解析XML的若干步骤

2013-08-01 
解析XML的若干方法解析XML分为dom和sax两种方式,各有一些不同的java实现?一、dom:由W3C定义的接口,将整个XM

解析XML的若干方法

解析XML分为dom和sax两种方式,各有一些不同的java实现

?

一、dom:由W3C定义的接口,将整个XML文档读入内存构建成一个DOM树,再对各个节点进行操作

1)xml解析

@Overridepublic void parseXml(String filename){DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();try{DocumentBuilder db = dbf.newDocumentBuilder();Document doc = db.parse(filename);Element root = doc.getDocumentElement();NodeList rootNodes = root.getChildNodes();System.out.println("root's length="+ rootNodes.getLength());iterateNodeList(root,rootNodes);}catch(Exception e){System.out.println(e);}}private void iterateNodeList(Node node, NodeList nodeList){System.out.println("=========start:"+node.getNodeName()+"============");int nodeListLength = nodeList.getLength();for(int i=0;i<nodeListLength;i++){Node childNode = nodeList.item(i);logNodeInfo(childNode,false);if(childNode.getNodeType()==Node.ELEMENT_NODE){NodeList childNodeList = childNode.getChildNodes();iterateNodeList(childNode,childNodeList);}}System.out.println("=========end:"+node.getNodeName()+"============");}

原始xml文档如下:

<?xml version="1.0" encoding="UTF-8"?><house location="USA"><room type="owner"><area><value>35</value><unit>m2</unit></area></room><room type="child"><area><value>25</value><unit>m2</unit></area></room><room type="guest"><area><value>25</value><unit>m2</unit></area></room></house>

?从程序parse后的结果可以看到,node之间是有空的文本节点(Node.TEXT_NODE)分隔的,结构如下:


解析XML的若干步骤
?

?2)xml修改

public void modifyXml(String filename) {DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();try{DocumentBuilder db = dbf.newDocumentBuilder();Document doc = db.parse(filename);Element root = doc.getDocumentElement();root.setAttribute("price", "380000$");TransformerFactory transformerFactory = TransformerFactory.newInstance();Transformer transformer = transformerFactory.newTransformer();DOMSource domSource = new DOMSource(doc);File file = new File("./src/house-modify.xml");if(file.exists()) file.delete();file.createNewFile();FileOutputStream out = new FileOutputStream(file);StreamResult streamResult = new StreamResult(out);transformer.transform(domSource, streamResult);System.out.println("file's absolute path=" + file.getAbsolutePath());}catch(Exception  e){System.out.println(e);}}

?

热点排行