课后练习1: <?xml version="1.0" encoding="UTF-8"?> <scores> <student id="1"> <name>牛猪圈</name> <course>java</course> <score>88</score> </student> <student id="2"> <name>周日天</name> <course>python</course> <score>66</score> </student> </scores> 课后练习2: import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.dom4j.Node; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; public class ShowInfo { public static void main(String[] args) { DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); try { // 创建DOM解析器对象 DocumentBuilder builder = builderFactory.newDocumentBuilder(); Document document = builder.parse("score.xml"); // 解析score.xml文件 NodeList list = document.getElementsByTagName("student"); // 读取scores for (int i = 0; i < list.getLength(); i++) { Element element = (Element) list.item(i); String id = element.getAttribute("id"); // 获得student的属性值 // 获取student节点下的所有元素 NodeList list2 = element.getChildNodes(); System.out.println("ID:"+id); for (int j = 0; j < list2.getLength(); j++) { if ((list2.item(j).getNodeType() == Node.ELEMENT_NODE)) { System.out.println(list2.item(j).getNodeName()+":"+list2.item(j).getFirstChild().getNodeValue()); } } System.out.println(""); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } 课后练习3: import java.io.FileOutputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; 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.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class Modification { DocumentBuilderFactory builderFactory = null; //DOM解析器工厂对象 Document document = null; //DOM数对象 NodeList list = null; //节点集合 DocumentBuilder builder = null; public static void main(String[] args) { Modification modification = new Modification(); // modification.delete(); // modification.amend(); // modification.add(); } /** * 删除id为1的节点 */ public void delete() { builderFactory = DocumentBuilderFactory.newInstance(); try { builder = builderFactory.newDocumentBuilder(); document = builder.parse("score.xml"); list = document.getElementsByTagName("student"); for (int i = 0; i < list.getLength(); i++) { Node node = list.item(i); Element element = (Element) list.item(i); String id = element.getAttribute("id"); if (id.equals("1") ) { //如果id为1 NodeList list2 = node.getChildNodes(); //拿到id为1的student的所有子节点 for (int j = 0; j< list2.getLength(); j++) { Node node2 = list2.item(j); if ((node2.getNodeType() == Node.ELEMENT_NODE) && (node2.getNodeName().equals("score"))) { //如果是score子节点 Element element2 = (Element) node2; node.removeChild(element2); } } } } save("NewScore.xml"); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } /** * 修改id为2的成绩为60 */ public void amend() { builderFactory = DocumentBuilderFactory.newInstance(); try { builder = builderFactory.newDocumentBuilder(); document = builder.parse("score.xml"); list = document.getElementsByTagName("score"); Element element = (Element) list.item(1); element.setTextContent("60分"); save("AmendScore.xml"); // 保存xml文件 } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } /** * 添加id为2的成绩为60方法 */ public void add() { builderFactory = DocumentBuilderFactory.newInstance(); try { builder = builderFactory.newDocumentBuilder(); document = builder.parse("score.xml"); list = document.getElementsByTagName("scores"); //新建student节点 Element element = document.createElement("student"); element.setAttribute("id", "3"); //新建name节点 Element element2 = document.createElement("name"); element2.setTextContent("蒋宝宝"); //新建course节点 Element element3 = document.createElement("course"); element3.setTextContent("java"); //创建score节点 Element element4 = document.createElement("score"); element4.setTextContent("88"); //添加student节点里面的子节点 element.appendChild(element2); element.appendChild(element3); element.appendChild(element4); list.item(0).appendChild(element); //添加student节点 save("AddScore.xml"); // 保存xml文件 } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } /** * 保存修改后的xml文件 */ public void save(String path) { TransformerFactory factory = TransformerFactory.newInstance(); try { Transformer transformer = factory.newTransformer(); DOMSource domSource = new DOMSource(document); transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); StreamResult result = new StreamResult(new FileOutputStream(path)); transformer.transform(domSource, result); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } 课后练习4: import java.io.File; import java.util.Iterator; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class DOM4jShowInfo { Document document = null; //DOM4j下的DOM树对象 /** * 加载DOM树 */ public void loadDOM() { SAXReader reader = new SAXReader(); try { document = reader.read(new File("score.xml")); } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 显示XML文件 */ public void showInfoXML() { Element root = document.getRootElement(); //拿到根节点 Iterator rootIterator = root.elementIterator(); while (rootIterator.hasNext()) { //循环student Element studentElement = (Element) rootIterator.next(); String idStr = studentElement.attributeValue("id"); //id的属性值; System.out.println("id:"+idStr); Iterator studentChild = studentElement.elementIterator(); //student下的字节点 while (studentChild.hasNext()) { //循环student下的子节点 Element stuChildElement = (Element) studentChild.next(); String nodeName = stuChildElement.getName(); //子节点名 String nodeText = stuChildElement.getText(); //子节点内容 System.out.println(nodeName+ ":"+nodeText); } System.out.println(""); } } public static void main(String [] args) { DOM4jShowInfo dom = new DOM4jShowInfo(); dom.loadDOM(); dom.showInfoXML(); } }
高级特性 第六章
猜你喜欢
转载自blog.csdn.net/lsxdbd/article/details/80570527
今日推荐
周排行