JAVA读取XML文件并解析 以及 JAVA生成文本文件输出

来源:互联网 发布:js 产生2 8随机数 编辑:程序博客网 时间:2024/06/05 09:06

    废话不多说,直接上代码及说明吧!

package Dao;import java.io.File;import java.util.ArrayList;import java.util.List;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NodeList;public class ReadXML {private String fileName;public ReadXML(String fileName){this.fileName = fileName; //构造函数,直接将需要读取的fileName通过函数初始化进行传值,当然你也可以使用其他方法!}public List<String> redaXml(){ArrayList<String> elementRefArray = new ArrayList<String>();  //这是一个ArrayList 容器,用于存储多出来的信息try{DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  DocumentBuilder db = factory.newDocumentBuilder();Document doc = db.parse(new File(this.fileName));    NodeList nodes = doc.getElementsByTagName("elementName");  //从xml文件中读出名为elementName的节点,放在nodes中,假如你的xml有很多这个节点,都会被存下来for (int i = 0; i < nodes.getLength(); i++)               {Element ele = (Element)nodes.item(i);  //Element 是将节点变为元素具体我还有点乱,<nodes.item(i)返回的是Node变量,那个里面没有方法可以获得指定节点属性,所以将其强制转换层Element获得某个节点的属性的参数值,当然你假如需要获得的是节点值,就需要用Node,然后使用node.getNodeValue() 就可以了
elementRefArray.add(ele.getAttribute("href");//获得名为href的属性值}}catch(Exception e){e.printStackTrace();}return elementRefArray;}}上面说的xml节点属性值和xml节点值,举例如下<node name=“xxxx”>YYYY</node>

其中name 为node 的属性,XXXX为node属性为name的值,而YYYY为node节点的值(不知小弟说法是否正确,不过和上面对应正确··)


Ok 搞好解析XML后,大多数情况下,我们需要对其值进行操作,所以上面的代码我把它放在一个ArrayList中,方便后续操作。操作好后,可能你又需要进行文件保存,所以下面的代码是文件保存的一种方法。。。

 private static String path = "D:/loadReplace.js";  // 文件保存路径和名称 private static  File filename = new File(path);public creat() throws IOException{
RandomAccessFile ss = null;
String str = "把我写进去!";if (!filename.exists()) {               filename.createNewFile();   //创建文件           try {            ss= new RandomAccessFile(filename, "rw");            ss.writeBytes(str);   //写文件        } catch (IOException e1) {            // TODO 自动生成 catch 块            e1.printStackTrace();        } finally {            if (ss!= null) {                try {                    ss.close();         //关闭文件                    System.out.println("创建结束");                } catch (IOException e2) {                    // TODO 自动生成 catch 块                    e2.printStackTrace();                }            }        }
}