java Xml 解析 Dom

来源:互联网 发布:网络言论自由作文800字 编辑:程序博客网 时间:2024/04/30 07:37

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();}}




0 0
原创粉丝点击