废话不多说,直接上代码及说明吧!
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 redaXml()
{
ArrayList elementRefArray = new ArrayList(); //这是一个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 是将节点变为元素具体我还有点乱,YYYY
其中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();
}
}
}
}