xml文件的插入和删除结点 如题,本人初学,自己依样画葫芦写的程序老是出错。所以在这里求一个写入和删除结点的例子,谢谢各位哥哥姐姐。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 忘说了,我用的是java自带的,不是第三方的。 下面是XML文件读写的例子,删除NODE我也不懂.希望能给你提供点帮助.package XMLTest;import java.io.FileOutputStream;import java.io.IOException;import java.util.Properties;import java.util.Vector;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import org.w3c.dom.DOMException;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NodeList;import org.w3c.dom.Text;//为了保存多个学生信息,还得借助一个集合类(并不是单纯意义上的集合,JAVA中的集合是集合框架的概念,包含向量、列表、哈希表等),//这里采用Vector向量类。定义在XMLTest测试类中,命名为student_Vector。然后定义两个方法readXMLFile和writeXMLFile,实现读写操作。代码如下:public class XMLTest { Vector student_Vector; private void readXMLFile(String inFile) throws Exception { // 建立一个解析器工厂DocumentBuilderFactory,以利用这个工厂来获得一个具体的解析器对象DocumentBuilder DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; try { db = dbf.newDocumentBuilder(); } catch (ParserConfigurationException pce) { System.err.println(pce); // 出异常时输出异常信息,然后退出,下同 System.exit(1); } Document doc = null; try { doc = db.parse(inFile); } catch (DOMException dom) { System.err.println(dom.getMessage()); System.exit(1); } catch (IOException ioe) { System.err.println(ioe); System.exit(1); } // 下面是解析XML的全过程, // 比较简单,先取根元素"students" Element root = doc.getDocumentElement(); // 取"学生"元素列表 NodeList students = root.getElementsByTagName("student"); for (int i = 0; i < students.getLength(); i++) { // 依次取每个"学生"元素 Element student = (Element) students.item(i); // 创建一个学生的Bean实例 StudentBean studentBean = new StudentBean(); // 取学生的性别属性 studentBean.setSex(student.getAttribute("sex")); // 取"姓名"元素,下面类同 System.out.println(student.getAttribute("sex")); NodeList names = student.getElementsByTagName("name"); if (names.getLength() == 1) { Element e = (Element) names.item(0); Text t = (Text) e.getFirstChild(); studentBean.setName(t.getNodeValue()); System.out.println(t.getNodeValue()); } NodeList ages = student.getElementsByTagName("age"); if (ages.getLength() == 1) { Element e = (Element) ages.item(0); Text t = (Text) e.getFirstChild(); studentBean.setAge(Integer.parseInt(t.getNodeValue())); System.out.println(t.getNodeValue()); } NodeList phones = student.getElementsByTagName("phonenumber"); if (phones.getLength() == 1) { Element e = (Element) phones.item(0); Text t = (Text) e.getFirstChild(); studentBean.setPhone(t.getNodeValue()); System.out.println(t.getNodeValue()); } student_Vector.add(studentBean); } } private void writeXMLFile(String outFile) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; try { db = dbf.newDocumentBuilder(); } catch (ParserConfigurationException pce) { System.err.print(pce); System.exit(1); } Document doc = null; doc = db.newDocument(); Element root = doc.createElement("students"); doc.appendChild(root); for (int i = 0; i < student_Vector.size(); i++) { StudentBean studentBean = (StudentBean) student_Vector.get(i); Element student = doc.createElement("student"); student.setAttribute("sex", studentBean.getSex()); root.appendChild(student); Element name = doc.createElement("name"); student.appendChild(name); Text tName = doc.createTextNode(studentBean.getName()); name.appendChild(tName); Element age = doc.createElement("age"); student.appendChild(age); Text tAge = doc .createTextNode(String.valueOf(studentBean.getAge())); age.appendChild(tAge); Element phone = doc.createElement("phonenumber"); student.appendChild(phone); Text tPhone = doc.createTextNode(studentBean.getPhone()); phone.appendChild(tPhone); } // 这个document就是xml文档对像模型吗??? // 如果我在Servlet里调用函数返回这个document是不是意味着调用了xml呀? // String name = outFile; DOMSource doms = new DOMSource(doc); // File file = new File(outFile.toString()); // StreamResult result = new StreamResult(file); // 上述方法不可行 StreamResult result = new StreamResult(new FileOutputStream(outFile .toString())); // TransformerFactory tf = TransformerFactory.newInstance(); // Transformer transformer = tf.newTransformer(); Transformer transformer = TransformerFactory.newInstance() .newTransformer(); Properties properties = transformer.getOutputProperties(); properties.setProperty(OutputKeys.ENCODING, "GB2312"); properties.setProperty(OutputKeys.METHOD, "xml"); properties.setProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperties(properties); transformer.transform(doms, result); } public static void main(String[] args) throws Exception { System.out.println(System.getProperty("user.dir")); XMLTest xmlTest = new XMLTest(); xmlTest.student_Vector = new Vector(); System.out.println("开始读student.xml文件"); xmlTest.readXMLFile("XMLTest\\student.xml"); StudentBean s1 = new StudentBean(); StudentBean s2 = new StudentBean(); s1.setAge(11); s1.setName("jinsanqi"); s1.setPhone("7451245"); s1.setSex("F"); xmlTest.student_Vector.addElement(s1); s2.setAge(12); s2.setName("xiaobao"); s2.setPhone("88846"); s2.setSex("M"); xmlTest.student_Vector.addElement(s2); System.out.println("开始写Output.xml文件"); xmlTest.writeXMLFile("XMLTest\\student_back.xml"); System.out.println("写入完成"); }}这里增加的时候可能需要构建一个JAVABEAN. 这是dom的,一般都用jdom或者还有一种(忘了叫什么了)。 这段代码怎么运行没反应? 作业贴-关于数据库,包,的问题 unsupportedclassverion error Cannot create iterator for this collection怎么解决 在申明class时,前面不注明所属类型是什么意思? 请教:MVC架构下的异常处理 请问怎样在jb里弄成jar或者exe文件? 那种java开发工具比较好? Java Builder和VisualAge for Java到底谁更好? 请问Oracle的Jdbc Driver的问题 请各位帮忙解决这个小问题,谢谢拉 [求助]请高手指点:ASP中文本框的自动换行
package XMLTest;import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.Vector;import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;//为了保存多个学生信息,还得借助一个集合类(并不是单纯意义上的集合,JAVA中的集合是集合框架的概念,包含向量、列表、哈希表等),
//这里采用Vector向量类。定义在XMLTest测试类中,命名为student_Vector。然后定义两个方法readXMLFile和writeXMLFile,实现读写操作。代码如下:public class XMLTest { Vector student_Vector; private void readXMLFile(String inFile) throws Exception {
// 建立一个解析器工厂DocumentBuilderFactory,以利用这个工厂来获得一个具体的解析器对象DocumentBuilder
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException pce) {
System.err.println(pce);
// 出异常时输出异常信息,然后退出,下同
System.exit(1);
}
Document doc = null;
try {
doc = db.parse(inFile);
} catch (DOMException dom) {
System.err.println(dom.getMessage());
System.exit(1);
} catch (IOException ioe) {
System.err.println(ioe);
System.exit(1);
}
// 下面是解析XML的全过程,
// 比较简单,先取根元素"students"
Element root = doc.getDocumentElement();
// 取"学生"元素列表
NodeList students = root.getElementsByTagName("student");
for (int i = 0; i < students.getLength(); i++) {
// 依次取每个"学生"元素
Element student = (Element) students.item(i);
// 创建一个学生的Bean实例
StudentBean studentBean = new StudentBean();
// 取学生的性别属性
studentBean.setSex(student.getAttribute("sex"));
// 取"姓名"元素,下面类同 System.out.println(student.getAttribute("sex")); NodeList names = student.getElementsByTagName("name");
if (names.getLength() == 1) {
Element e = (Element) names.item(0);
Text t = (Text) e.getFirstChild();
studentBean.setName(t.getNodeValue());
System.out.println(t.getNodeValue());
} NodeList ages = student.getElementsByTagName("age");
if (ages.getLength() == 1) {
Element e = (Element) ages.item(0);
Text t = (Text) e.getFirstChild();
studentBean.setAge(Integer.parseInt(t.getNodeValue()));
System.out.println(t.getNodeValue());
} NodeList phones = student.getElementsByTagName("phonenumber");
if (phones.getLength() == 1) {
Element e = (Element) phones.item(0);
Text t = (Text) e.getFirstChild();
studentBean.setPhone(t.getNodeValue());
System.out.println(t.getNodeValue());
} student_Vector.add(studentBean);
}
} private void writeXMLFile(String outFile) throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException pce) {
System.err.print(pce);
System.exit(1);
}
Document doc = null;
doc = db.newDocument();
Element root = doc.createElement("students");
doc.appendChild(root);
for (int i = 0; i < student_Vector.size(); i++) {
StudentBean studentBean = (StudentBean) student_Vector.get(i);
Element student = doc.createElement("student");
student.setAttribute("sex", studentBean.getSex());
root.appendChild(student); Element name = doc.createElement("name");
student.appendChild(name);
Text tName = doc.createTextNode(studentBean.getName());
name.appendChild(tName); Element age = doc.createElement("age");
student.appendChild(age);
Text tAge = doc
.createTextNode(String.valueOf(studentBean.getAge()));
age.appendChild(tAge); Element phone = doc.createElement("phonenumber");
student.appendChild(phone);
Text tPhone = doc.createTextNode(studentBean.getPhone());
phone.appendChild(tPhone);
}
// 这个document就是xml文档对像模型吗???
// 如果我在Servlet里调用函数返回这个document是不是意味着调用了xml呀?
// String name = outFile;
DOMSource doms = new DOMSource(doc); // File file = new File(outFile.toString());
// StreamResult result = new StreamResult(file);
// 上述方法不可行 StreamResult result = new StreamResult(new FileOutputStream(outFile
.toString())); // TransformerFactory tf = TransformerFactory.newInstance();
// Transformer transformer = tf.newTransformer();
Transformer transformer = TransformerFactory.newInstance()
.newTransformer();
Properties properties = transformer.getOutputProperties();
properties.setProperty(OutputKeys.ENCODING, "GB2312");
properties.setProperty(OutputKeys.METHOD, "xml");
properties.setProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperties(properties);
transformer.transform(doms, result);
} public static void main(String[] args) throws Exception {
System.out.println(System.getProperty("user.dir")); XMLTest xmlTest = new XMLTest();
xmlTest.student_Vector = new Vector(); System.out.println("开始读student.xml文件");
xmlTest.readXMLFile("XMLTest\\student.xml"); StudentBean s1 = new StudentBean();
StudentBean s2 = new StudentBean();
s1.setAge(11);
s1.setName("jinsanqi");
s1.setPhone("7451245");
s1.setSex("F");
xmlTest.student_Vector.addElement(s1);
s2.setAge(12);
s2.setName("xiaobao");
s2.setPhone("88846");
s2.setSex("M");
xmlTest.student_Vector.addElement(s2);
System.out.println("开始写Output.xml文件");
xmlTest.writeXMLFile("XMLTest\\student_back.xml");
System.out.println("写入完成");
}
}
这里增加的时候可能需要构建一个JAVABEAN.