java利用dom4j解析XML文件

来源:互联网 发布:linux 源码安装lnmp 编辑:程序博客网 时间:2024/05/17 04:13
public class XML_dom4j {static String path = "123.xml";public static void main(String[] args) throws Exception {XML_dom4j x = new XML_dom4j();x.loadDocument();//x.add();//x.update();x.del();x.queryAll();//x.save("123.xml");}Document doc = null;/** * 加载dom * @throws Exception  */public void loadDocument() throws Exception{//获取根节点SAXReader  saxReader = new SAXReader();doc = saxReader.read("123.xml");}/** * 查询所有节点 */@SuppressWarnings("unchecked")public void queryAll(){Element el = doc.getRootElement();Iterator<Element> it = el.elementIterator();while(it.hasNext()){Element brandE = (Element)it.next();String brandStr = brandE.attributeValue("name");Iterator<Element> i = brandE.elementIterator();while(i.hasNext()){Element typeE = (Element)i.next();String typeStr = typeE.attributeValue("name");System.out.println("品牌:"+brandStr+",型号:"+typeStr);}}}/** * 增加节点 */public void add(){//获取根节点Element rootE = doc.getRootElement();//创建根节点  设置属性Element brandE = rootE.addElement("Brand").addAttribute("name", "三星");//创建type节点 设置属性brandE.addElement("type").addAttribute("name", "note4");}/** * 修改节点 */@SuppressWarnings("unchecked")public void update(){Element rootE = doc.getRootElement();Iterator<Element> it = rootE.elementIterator();int i = 0;while(it.hasNext()){Element brandE = it.next();brandE.addAttribute("id", i+"");//修改属性值//if(brandE.attributeValue("name").equals("三星")){//brandE.setAttributeValue("name", "SANSUNG");//}}this.save(path);}/** * 删除节点 */@SuppressWarnings("unchecked")public void del(){Element rootE = doc.getRootElement();Iterator<Element> brandIt = rootE.elementIterator();while(brandIt.hasNext()){Element brandE = brandIt.next();if(brandE.attributeValue("name").equals("SANSUNG")){brandE.getParent().remove(brandE);}}this.save(path);}/** * 保存节点 */public void save(String path){//格式转换器OutputFormat format = OutputFormat.createPrettyPrint();//设置编码格式format.setEncoding("UTF-8");try {PrintWriter pw = new PrintWriter(path, "UTF-8");XMLWriter writer = new XMLWriter(pw, format);writer.write(doc);writer.close();} catch (IOException e) {e.printStackTrace();}}}v

XML文件信息如下:

<?xml version="1.0" encoding="UTF-8"?><PhoneInfo>   <Brand name="华为" id="0">     <type name="P9"/>   </Brand>    <Brand name="苹果" id="0">     <type name="Iphone6"/>      <type name="Iphone7"/>   </Brand> </PhoneInfo>


原创粉丝点击