dom4j
public class Dom4jTest { // Dom4j解析xml // 因为所有的方法都需要Dom树 static Document document = null; static Element root = null; public static void main(String[] args) { // 获取dom树 getDocument(); // addPhone(); deletePhone(); updatePhone(); showPhone(); } // 解析xml文件 public static void getDocument() { SAXReader reader = new SAXReader(); try { document = reader.read("收藏信息.xml"); root = document.getRootElement();// 获取根节点 } catch (DocumentException e) { e.printStackTrace(); } } /** * 显示所有的手机信息 */ public static void showPhone() { // 遍历所有的节点 Iterator itBrand = root.elementIterator(); while (itBrand.hasNext()) { Element brand = (Element) itBrand.next(); System.out.println("手机的品牌是:" + brand.attributeValue("name")); System.out.println("手机的编号是:" + brand.attributeValue("id")); System.out.println("===========下面是子节点============"); Iterator itType = brand.elementIterator(); while (itType.hasNext()) {// 获取手机型号 Element type = (Element) itType.next(); System.out.println("手机的型号是:" + type.attributeValue("name")); // 输出文本节点的值 if (!type.getText().equals("")) { System.out.println(type.getTextTrim()); } } } } // 保存xml信息 public static void save(String path) { OutputFormat format = null; XMLWriter writer = null; try { // dom4j的转换器 不用使用 new createPrettyPrint底层有 new format = OutputFormat.createPrettyPrint(); // 写入xml文件 writer = new XMLWriter(new FileWriter(path), format); writer.write(document); } catch (IOException e) { e.printStackTrace(); } finally { // 关流 try { writer.close(); } catch (IOException e) { e.printStackTrace(); } } } // 新增节点 public static void addPhone() { Element element = root.addElement("Brand"); // 节点设置属性 element.addAttribute("name", "黑莓"); // 节点下面新增子节点 Element type = element.addElement("Type"); type.addAttribute("name", "A1"); // 保存 省略 我们 节点之间的拼接! dom需要拼接 save("收藏信息.xml"); } // 删除 public static void deletePhone() { // 获取所有Brand Iterator brand = root.elementIterator(); while (brand.hasNext()) { Element element = (Element) brand.next(); // 拿到每一个Brand // 获取属性值 判断是不是 要删除的对象 if (element.attributeValue("name").equals("黑莓")) { element.getParent().remove(element); } } save("收藏信息.xml"); } // 修改 public static void updatePhone() { // 获取所有Brand Iterator brand = root.elementIterator(); while (brand.hasNext()) { Element element = (Element) brand.next(); // 拿到每一个Brand // 获取属性值 判断是不是 要修改的对象 if (element.attributeValue("name").equals("哇哈哈")) { element.attribute("name").setValue("哇哈哈哈哈"); } } save("收藏信息.xml"); } }
作者:Rick__想太多先森
出处:http://www.cnblogs.com/xtdxs/
注意:本文仅代表个人理解和看法哟!和本人所在公司和团体无任何关系!