Java解析XML文件的两种方式详解
来源:互联网 发布:java web访问量统计 编辑:程序博客网 时间:2024/05/16 00:24
Java解析XML文件:
常规的两种方式:dom4j方式+jdom方式
1.要解析的xml文件
<?xml version="1.0" encoding="utf-8"?><books> <book name="ThinkInJava"> <language>english</language> <price>60.0</price> </book> <book name="Java编程思想"> <language>chinese</language> <price>75.0</price> </book></books>
?
2.dom4j方式:需要用dom4j.jar包
public class Dom4jXML { public Dom4jXML() { } public void praseXML(String filePath) { SAXReader reader = new SAXReader();// 创建一个能读取xml文档的reader Document document;// 构建一个文档对象,用来将xml转换成Document对象 try { document = reader.read(new FileInputStream(new File(filePath)));// 从给定的文件中读取xml并且构建成Document Element rootElement = document.getRootElement();// 获得文档对象的根节点 List<Element> listElement = rootElement.elements();// 获得根节点下面所有的子节点 for (Element e : listElement) {// 遍历所有的子节点 Element element = e;// 当前节点,也就是Book节点 Attribute nameAttribute = element.attribute("name");// 得到当前节点的属性对象 String nameString = nameAttribute.getValue();// 获得属性对象的值 System.out.println(element.getName() + ":" + nameString);// 将节点信息输出 Element languageElement = element.element("language");// 获得当前节点的language子节点 System.out.println(languageElement.getName() + ":" + languageElement.getTextTrim());// 将language节点信息输出 Element priceElement = element.element("price"); System.out.println(priceElement.getName() + ":" + priceElement.getText()); // 判断有没有出版年份节点,要是有就打印出来,要是没有就创建并且添加到Document对象中(添加节点) Element yearElement = element.element("year"); if (yearElement == null) { yearElement = element.addElement("year"); yearElement.setText("2014year"); } else { System.out.println(yearElement.getName() + ":" + yearElement.getTextTrim()); } // 通货膨胀,导致中国物价上涨,凡是汉语书籍涨价10.00元(修改节点) if (languageElement.getTextTrim().equals("chinese")) { String priceStr = priceElement.getTextTrim(); double priceNum = Double.parseDouble(priceStr); priceNum += 10.00; priceElement.setText(priceNum + ""); } } // 将修改以后的Document对象保存成xml到原来的地方 XMLWriter write = new XMLWriter(new FileWriter(filePath)); write.write(document); write.close(); } catch (DocumentException e) { e.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } } public static void main(String[] args) { new Dom4jXML().praseXML("你自己的xml路径"); }}
?
3.jdom方式:需要用到jdom.jar包
public class JdomXML { public JdomXML() { } public void parseXML(String filePath) { SAXBuilder builder = new SAXBuilder(false);// 用来读取xml文件 Document document;// 构建一个文档对象,用来将xml转换成Document对象 try { document = builder.build(new FileInputStream(new File(filePath)));// 从给定的文件中读取xml并且构建成Document Element elementRoot = document.getRootElement();// 获得文档对象的根节点 List<Element> elementList = elementRoot.getChildren("book");// 获得根节点下面所有的Book节点 for (Element e : elementList) {// 遍历Book节点 Element element = e;// 当前的Book节点 String name = element.getAttributeValue("name");// 获得Book节点的name属性 Element languageElement = element.getChild("language");// 获得Book节点下的language子节点 String language = languageElement.getValue();// 获得language节点的值 Element priceElement = element.getChild("price"); String price = priceElement.getValue(); // 打印输出子节点相关信息 System.out.println(element.getName() + ":" + name); System.out.println(languageElement.getName() + ":" + language); System.out.println(priceElement.getName() + ":" + price); // 判断有没有出版年份节点,要是有就打印出来,要是没有就创建并且添加到Document对象中(添加节点) Element yearElement = element.getChild("year"); if (yearElement == null) { yearElement = new Element("year"); yearElement.setText("2014year"); element.addContent(yearElement); } else { System.out.println(yearElement.getName() + ":" + yearElement.getValue()); } // 判断是不是外文书籍,要是外文书籍,就降价1.50元(修改节点) if (language.equals("english")) { double priceNum = Double.parseDouble(price); priceNum -= 1.50; priceElement.setText(priceNum + ""); } } // 将修改以后的Document对象保存成xml到原来的地方 XMLOutputter outputter = new XMLOutputter(); outputter.output(document, new FileOutputStream(new File(filePath))); } catch (JDOMException | IOException e) { e.printStackTrace(); } } public static void main(String[] args) { new JdomXML().parseXML("你自己的xml路径"); }}
0 0
- Java解析XML文件的两种方式详解
- Java解析XML文件的两种方式详解
- Java解析XML文件两种方式
- java中解析xml文件的两种方式
- XML解析的两种解析方式
- JAVA之XML解析的两种方式
- Android/Java XML数据格式解析的两种方式
- java 两种xml解析方式
- xml文件解析类及Android项目中常用到的两种获取xml文件方式
- kxml解析 xml的两种方式
- Xml解析的两种方式
- xml的两种解析方式
- xml的两种解析方式
- xml文档的两种解析方式
- XML解析的两种方式
- java读取xml文件的两种方式
- java读取XML文件的两种方式
- Java加载和解析XML文件的两种方法
- 求所有最大公共子序列的算法实现
- ⑤JavaMail与CommonMail的区别
- Cocos2dx--取得子节点在屏幕中的位置
- Map线程安全几种实现方法[转]
- POJ1006 - Biorhythms - 中国剩余定理
- Java解析XML文件的两种方式详解
- 自定义应用程序配置文件(app.config)
- 简单容斥
- iOS 调用相册
- 情人节约会聚餐必备手机订餐app【排队美食】
- 关于const 限定符
- 76_popup窗体的动画效果
- 合肥华为HCDP培训认证要多少钱?哪家培训机构好??
- 法国获得国家的骨灰级的规划规划局规划局