临沭县哪里有建网站的,网站重大建设项目公开发布制度,德州seo外包,手机app开发网站这两天做了个天气的小应用#xff0c;需要用到百度的天气api#xff0c;获取到的信息是一个xml文档。
所以就从网上查了一下相关的知识#xff0c;就是关于怎么去解析出来xml文件的信息。
先放一个我自己写的例子#xff0c;加了点注释#xff0c;贴这里吧。 package cn…这两天做了个天气的小应用需要用到百度的天气api获取到的信息是一个xml文档。
所以就从网上查了一下相关的知识就是关于怎么去解析出来xml文件的信息。
先放一个我自己写的例子加了点注释贴这里吧。 package cn.yzy.test;import java.util.List;import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.Iterator;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;public class MyTest {/*** DOM4J读写XML示例*/public static void main(String[] args) {// 用变量保存一下xml文件的路径String path d:\\temp\\student.xml;// 创建xml的方法createXML(path);// 读取xml文件的方法readXML(path);// 把xml文件读取成StringString xml readFile(path);// 输出一下xmlSystem.out.println(xml);// 把String的xml解析出来readXMLStr(xml);}/*** readFile 读取文件到String* * param path* return*/public static String readFile(String path) {String txt ;try {// 读取文件File file new File(path);// 创建输入流InputStreamReader isReader new InputStreamReader(new FileInputStream(file), utf-8);// 缓冲区BufferedReader bf new BufferedReader(isReader);// 循环把文本读取出来String lineTxt null;while ((lineTxt bf.readLine()) ! null) {txt lineTxt;}} catch (Exception e) {e.printStackTrace();}// 最后把文本字符串返回return txt;}/*** createXML 创建XML到指定目录* * param path*/public static void createXML(String path) {// 读取文件检查文件是否存在存在就不创建文件了。File file new File(path);if (!file.exists()) {try {// 创建xml文档用DocumentHelperDocument dc DocumentHelper.createDocument();// 在文档里要加入元素节点// 添加 根节点 - 学生信息Element root dc.addElement(学生信息);// 在 学生信息节点 中 加入 学生Element stu1 root.addElement(学生);// 可以设置属性设置学生 sid 属性为 001stu1.addAttribute(sid, 001);// 在学生里面加入子元素键值对应Element name1 stu1.addElement(姓名);name1.setText(张三);Element sex1 stu1.addElement(性别);sex1.setText(男);Element stu2 root.addElement(学生);stu2.addAttribute(sid, 002);Element name2 stu2.addElement(姓名);name2.setText(小红);Element sex2 stu2.addElement(性别);sex2.setText(女);// xml文档生成准备写入文件文件路径和格式设置好。// 输出格式以及编码设置OutputFormat format new OutputFormat(\n, true);format.setEncoding(utf-8);// 声明一个写文件的类XMLWriter writer new XMLWriter(new FileOutputStream(path),format);// 写文件完成后关闭writer.write(dc);writer.close();System.out.println(操作成功);} catch (IOException e) {e.printStackTrace();}} else {System.out.println(文件已存在);}}/*** readXML 读取XML从指定文件路径* * param path*/public static void readXML(String path) {try {// 输出文件是否存在System.out.println(new File(path).exists());// 新建一个读取xml文档的对象SAXReader reader new SAXReader();// 将文件读入DocumentDocument dc reader.read(path);System.out.println(dc.toString());// 读取根节点Element root dc.getRootElement();// 遍历根节点下所有子节点仅能访问到一层List nodes root.elements();for (Iterator it nodes.iterator(); it.hasNext();) {Element ele (Element) it.next();System.out.println(ele.getName() ele.attributeValue(sid));System.out.println(ele.elementText(姓名));System.out.println(ele.elementText(性别));}} catch (DocumentException e) {e.printStackTrace();}System.out.println(--- --- End --- ---);}/*** readXMLStr 从String中读取XML信息* * param xml*/public static void readXMLStr(String xml) {try {System.out.println(--- --- readXMLStr --- ---);// 同样是创建读取xml的类但是读取方法参数改为new StringReader(xml) 从字符串读取SAXReader reader new SAXReader();Document dc reader.read(new StringReader(xml));System.out.println(dc.toString());Element root dc.getRootElement();List nodes root.elements();for (Iterator it nodes.iterator(); it.hasNext();) {Element ele (Element) it.next();System.out.println(ele.getName() ele.attributeValue(sid));System.out.println(ele.elementText(姓名));System.out.println(ele.elementText(性别));}} catch (DocumentException e) {e.printStackTrace();}System.out.println(--- --- End --- ---);}
}以下是我从其他一个博客里参考的一些资料深受启发 网址
http://www.blogjava.net/biiau/archive/2008/09/24/231005.html 部分DOM4J的解释 一.Document对象相关 1.读取XML文件,获得document对象. SAXReader reader new SAXReader(); Document document reader.read(new File(input.xml)); 2.解析XML形式的文本,得到document对象. String text members/members; Document document DocumentHelper.parseText(text); 3.主动创建document对象. Document document DocumentHelper.createDocument(); Element root document.addElement(members);// 创建根节点 二.节点相关 1.获取文档的根节点. Element rootElm document.getRootElement(); 2.取得某节点的单个子节点. Element memberElmroot.element(member);// member是节点名 3.取得节点的文字 String textmemberElm.getText(); 也可以用: String textroot.elementText(name); 这个是取得根节点下的name字节点的文字. 4.取得某节点下名为member的所有字节点并进行遍历. List nodes rootElm.elements(member); for (Iterator it nodes.iterator(); it.hasNext();) { Element elm (Element) it.next(); // do something } 5.对某节点下的所有子节点进行遍历. for(Iterator itroot.elementIterator();it.hasNext();){ Element element (Element) it.next(); // do something } 6.在某节点下添加子节点. Element ageElm newMemberElm.addElement(age); 7.设置节点文字. ageElm.setText(29); 8.删除某节点. parentElm.remove(childElm);// childElm是待删除的节点,parentElm是其父节点 9.添加一个CDATA节点. Element contentElm infoElm.addElement(content); contentElm.addCDATA(diary.getContent()); contentElm.getText(); // 特别说明获取节点的CDATA值与获取节点的值是一个方法 contentElm.clearContent(); //清除节点中的内容CDATA亦可 三.属性相关. 1.取得某节点下的某属性 Element rootdocument.getRootElement(); Attribute attributeroot.attribute(size);// 属性名name 2.取得属性的文字 String textattribute.getText(); 也可以用: String text2root.element(name).attributeValue(firstname); 这个是取得根节点下name字节点的属性firstname的值. 3.遍历某节点的所有属性 Element rootdocument.getRootElement(); for(Iterator itroot.attributeIterator();it.hasNext();){ Attribute attribute (Attribute) it.next(); String textattribute.getText(); System.out.println(text); } 4.设置某节点的属性和文字. newMemberElm.addAttribute(name, sitinspring); 5.设置属性的文字 Attribute attributeroot.attribute(name); attribute.setText(sitinspring); 6.删除某属性 Attribute attributeroot.attribute(size);// 属性名name root.remove(attribute); 四.将文档写入XML文件. 1.文档中全为英文,不设置编码,直接写入的形式. XMLWriter writer new XMLWriter(new FileWriter(output.xml)); writer.write(document); writer.close(); 2.文档中含有中文,设置编码格式写入的形式. OutputFormat format OutputFormat.createPrettyPrint(); format.setEncoding(GBK); // 指定XML编码 XMLWriter writer new XMLWriter(new FileWriter(output.xml),format); writer.write(document); writer.close(); 五.字符串与XML的转换 1.将字符串转化为XML String text members membersitinspring/member /members; Document document DocumentHelper.parseText(text); 2.将文档或节点的XML转化为字符串. SAXReader reader new SAXReader(); Document document reader.read(new File(input.xml)); Element rootdocument.getRootElement(); String docXmlTextdocument.asXML(); String rootXmlTextroot.asXML(); Element memberElmroot.element(member); String memberXmlTextmemberElm.asXML();