XML解析之使用DOM分析操作XML文档
来源:互联网 发布:网络用语py什么意思 编辑:程序博客网 时间:2024/06/07 05:12
package forXML;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerConfigurationException;import javax.xml.transform.TransformerException;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NamedNodeMap;import org.w3c.dom.Node;import org.w3c.dom.NodeList;/** * xml解析,你们喜欢的实验报告哟~~~哈哈哈 * * @author 焦含寒 * */public class XMLParser { //遍历xml文件 public static void travelXML(Document doc) { NodeList classList = doc.getElementsByTagName("班级"); for(int i=0;i<classList.getLength();i++){ Element clas = (Element) classList.item(i); System.out.println("代号:"+clas.getAttribute("代号")); } NodeList stuList = doc.getElementsByTagName("学生"); for(int i = 0;i<stuList.getLength();i++){ Element stu = (Element) stuList.item(i); System.out.println("name:"+stu.getAttribute("name")); NodeList scoNode = stu.getElementsByTagName("各科成绩"); Element sco = (Element) scoNode.item(0); NodeList couList = sco.getElementsByTagName("Course"); NodeList scoList = sco.getElementsByTagName("Score"); for(int j = 0;j<couList.getLength() && j<scoList.getLength();j++){ System.out.print(couList.item(j).getTextContent()+":"); System.out.println(scoList.item(j).getTextContent()); } } } //查找某个学生(宋江)的各科成绩 public static void query(Document doc){ NodeList list = doc.getElementsByTagName("学生"); for(int i=0;i<list.getLength();i++){ Element stu = (Element) list.item(i); if(stu.getAttribute("name").equals("宋江")){ NodeList couList = stu.getElementsByTagName("Course"); NodeList scoList = stu.getElementsByTagName("Score"); for(int j=0;j<couList.getLength() && j<scoList.getLength();j++){ System.out.print(couList.item(j).getTextContent()); System.out.println(scoList.item(j).getTextContent()); } } } } //添加一个学生节点(武松)的各科成绩 public static void add(Document doc) throws TransformerException{ //创建学生节点 Element newStu = doc.createElement("学生"); //添加属性 newStu.setAttribute("name", "武松"); Element newStu_sco = doc.createElement("各科成绩"); Element newStu_cou1 = doc.createElement("Course"); newStu_cou1.setTextContent("计算机基础"); Element newStu_sco1 = doc.createElement("Score"); newStu_sco1.setTextContent("99"); Element newStu_cou2 = doc.createElement("Course"); newStu_cou2.setTextContent("C语言"); Element newStu_sco2 = doc.createElement("Score"); newStu_sco2.setTextContent("90"); Element newStu_cou3 = doc.createElement("Course"); newStu_cou3.setTextContent("计算机网络"); Element newStu_sco3 = doc.createElement("Score"); newStu_sco3.setTextContent("95"); Element newStu_cou4 = doc.createElement("Course"); newStu_cou4.setTextContent("XML技术"); Element newStu_sco4 = doc.createElement("Score"); newStu_sco4.setTextContent("100"); newStu_sco.appendChild(newStu_cou1); newStu_sco.appendChild(newStu_sco1); newStu_sco.appendChild(newStu_cou2); newStu_sco.appendChild(newStu_sco2); newStu_sco.appendChild(newStu_cou3); newStu_sco.appendChild(newStu_sco3); newStu_sco.appendChild(newStu_cou4); newStu_sco.appendChild(newStu_sco4); //把各科成绩节点挂在”武松“节点下面 newStu.appendChild(newStu_sco); //把”武松“节点挂在doc节点下 doc.getDocumentElement().appendChild(newStu); //更新xml文件 TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(); transformer.transform(new DOMSource(doc), new StreamResult("src/forXML/scoreList.xml")); } //删除”宋江“节点 public static void delete(Document doc) throws TransformerException{ NodeList list = doc.getElementsByTagName("学生"); for(int i=0;i<list.getLength();i++){ Element stu = (Element) list.item(i); if(stu.getAttribute("name").equals("宋江")){// Node node = stu.getElementsByTagName("各科成绩").item(0);// node.getParentNode().removeChild(node); stu.getParentNode().removeChild(stu); } } //更新xml文件 TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(); transformer.transform(new DOMSource(doc), new StreamResult("src/forXML/scoreList.xml")); } public static void main(String[] args) { // TODO Auto-generated method stub try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse("src/forXML/scoreList.xml"); travelXML(doc); System.out.println("-------------我是一条可爱的分解线--------------"); query(doc); add(doc); delete(doc); System.out.println("-------------我是一条可爱的分解线--------------"); travelXML(doc); } catch (Exception e) { e.printStackTrace(); } }}
阅读全文
0 0
- XML解析之使用DOM分析操作XML文档
- XML解析之使用SAX分析操作XML文档
- 使用DOM解析XML文档
- 使用DOM解析XML文档
- 使用DOM 解析XML文档
- 使用DOM操作XML文档
- 使用 DOM 操作 XML 文档
- XML文档解析之DOM解析
- xml文档解析 DOM和DOM4J分析
- XML解析之使用DOM4j操作XML文档
- Dom解析XML文档
- DOM 解析 XML 文档
- DOM解析XML文档
- DOM解析XML文档
- DOM解析XML文档
- DOM解析XML文档
- DOM解析XML文档
- Dom解析XMl文档
- Java网络编程入门
- 设计模式
- 进程调度之linux 用户态抢占和内核态抢占
- 五月的仓颉大神写的 三年java程序员面试感悟 值得分享给大家
- 4399小游戏 十滴水 求解器(输出路径的bfs)
- XML解析之使用DOM分析操作XML文档
- JavaScript基础
- Apriori (C++实现)
- 【Swift3.1】闭包(Closures)
- 利用Fragment和FragmentTabHost实现各类app底部菜单栏
- Maven依赖本地jar包
- Qt学习资料大全
- getCompoundDrawables()和获取图片宽度和高度
- 汇编程序基础