xml 文件
employer.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <employee> <employer email="LiMing@126.com"> <name>LiMIng</name> <sex>M</sex> <age>30</age> </employer> <employer email="Kate55@hotmail.com"> <name>Kate</name> <sex>F</sex> <age>28</age> </employer> </employee>java 代码
XmlParser.java
package XmlParser; /* * Date 2014.02.20 * referrece * ahtor:璀若星辰 */ import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; 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; import org.w3c.dom.Text; public class XmlParser { private Document doc; private String path; //读入一个XML文档,首先要一个DocumentBuilder对象 public XmlParser(String path){ this.path = path; //实例化一个文档构建器工厂 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); try{ //通过文档构建器工厂获取一个文档构建器 DocumentBuilder builder = factory.newDocumentBuilder(); //通过文档构建器构建一个文档实例 this.doc = builder.parse(path); }catch(Exception e){ e.printStackTrace(); } } public void parseEx(){ NodeList n1 = doc.getElementsByTagName("employer"); System.out.println(n1.getLength()); for (int i = 0;i < n1.getLength(); i++ ){ Node n = n1.item(i); System.out.println("n="+n); //获取 n 节点下所有的子节点。此处值得注意,在DOM解析时会将所有回车都视为 n 节点的子节点。 //排除回车 if(n instanceof Text){ continue; } parseEmployer((Element)n); } } //获取value 和 text 方法 public void parseEmployer(Element e){ String email = e.getAttribute("email"); System.out.println("email="+email); String name = getChildInnerText(e, "name"); System.out.println("name="+name); String age = getChildInnerText(e, "age"); System.out.println("age="+age); } //获取子节点方法 public Element getChild(Element e,String tagName){ return (Element) e.getElementsByTagName(tagName).item(0); } //获取节点文本内容方法 public String getChildInnerText(Element e,String childTagName){ return e.getElementsByTagName(childTagName).item(0).getTextContent(); } //添加节点 public void addNode(){ Text text = doc.createTextNode(" "); Text newline = doc.createTextNode("\n"); Element ele = doc.createElement("employer"); ele.setAttribute("email","Java@Sun.com" ); ele.setAttribute("password", "123"); ele.setTextContent("xml文件"); Element ele2 = doc.createElement("name"); ele2.setTextContent("BIll"); Node n = doc.getElementsByTagName("employee").item(0); n.appendChild(text); n.appendChild(ele); n.appendChild(newline); n.appendChild(ele2); saveXml(); System.out.println("save success"); } //同理删除节点 同添加节点但调用removeChild //保存方法 private void saveXml() { try { TransformerFactory tFactory =TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new File(path)); transformer.transform(source, result); } catch (Exception e) { e.getStackTrace(); } } public static void main(String[] args) { XmlParser xp = new XmlParser("D:\\pleiades4.2\\pleiades\\eclipse\\workspace\\Test_knowledge\\JavaSource\\XmlParser\\employer.xml"); xp.parseEx(); xp.addNode(); } }
原文:http://blog.csdn.net/u012631267/article/details/19557257