第6章



<?xml version="1.0" encoding="UTF-8"?> 
<Scores> 
<student id ="1"> 
<name>张三 </name> 
<coures>JAVA</coures> 
<score>99</score> 
</student> 
  <student id ="2"> 
<name>李四 </name> 
<coures>C#</coures> 
<score>60</score> 
</student> 
  <student id ="3"> 
<name>赵六 </name> 
<coures>SQL</coures> 
<score>80</score> 
</student> 
</Scores> 
第二题,输出第一题的信息 
package xml; 
import java.io.IOException; 
import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.parsers.ParserConfigurationException; 
import org.w3c.dom.Document; 
import org.w3c.dom.NamedNodeMap; 
import org.w3c.dom.Node; 
import org.w3c.dom.NodeList; 
import org.xml.sax.SAXException; 
public class Score { 
Document doc = null; 
public void getDocument() { 
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
  try { 
      DocumentBuilder db = dbf.newDocumentBuilder(); 
      doc = db.parse("scores.xml"); 
  } catch (ParserConfigurationException e) { 
      // TODO 自动生成的 catch 块 
      e.printStackTrace(); 
  } catch (SAXException e) { 
      // TODO 自动生成的 catch 块 
      e.printStackTrace(); 
  } catch (IOException e) { 
      // TODO 自动生成的 catch 块 
      e.printStackTrace(); 
  } 
public void showscore() { 
  // 获取节点             标记名 
  NodeList stulist = doc.getElementsByTagName("student"); 
  for (int i = 0; i < stulist.getLength(); i++) { 
      Node student = stulist.item(i); 
      System.out.println("第"+(i+1)+"个学生\n"); 
      NamedNodeMap num= student.getAttributes();//获取属性 
       
      for (int j = 0; j < num.getLength(); j++) { 
          Node Name = num.item(j); 
          System.out.println(Name.getNodeName() + ":" + Name.getNodeValue() + " "); 
      } 
          NodeList sco = student.getChildNodes();//获取子节点 
          for (int k = 0; k < sco.getLength(); k++) { 
              Node scor= sco.item(k); 
              if (scor.getNodeType()==Node.ELEMENT_NODE) { 
                  System.out.println(scor.getNodeName()+":"+scor.getTextContent()+" "); 
              } 
          } 
          } 
      } 
public static void main(String[] args) { 
  Score score=new Score(); 
  score.getDocument(); 
  score.showscore(); 

第三题,删除信息,修改信息,添加信息 
package xml; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
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.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.Attr; 
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; 
import org.w3c.dom.Text; 
import org.xml.sax.SAXException; 
public class Score { 
Document doc = null; 
public void getDocument() { 
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
  try { 
      DocumentBuilder db = dbf.newDocumentBuilder(); 
      doc = db.parse("scores.xml"); 
  } catch (ParserConfigurationException e) { 
      // TODO 自动生成的 catch 块 
      e.printStackTrace(); 
  } catch (SAXException e) { 
      // TODO 自动生成的 catch 块 
      e.printStackTrace(); 
  } catch (IOException e) { 
      // TODO 自动生成的 catch 块 
      e.printStackTrace(); 
  } 
public void showscore() { 
  // 获取节点             标记名 
  NodeList stulist = doc.getElementsByTagName("student"); 
  for (int i = 0; i < stulist.getLength(); i++) { 
      Node student = stulist.item(i); 
      System.out.println("第"+(i+1)+"个学生"); 
      System.out.println(); 
      NamedNodeMap num= student.getAttributes();//获取属性 
       
      for (int j = 0; j < num.getLength(); j++) { 
          Node Name = num.item(j); 
          System.out.println(Name.getNodeName() + ":" + Name.getNodeValue() + " "); 
      } 
          NodeList sco = student.getChildNodes();//获取子节点 
          for (int k = 0; k < sco.getLength(); k++) { 
              Node scor= sco.item(k); 
              if (scor.getNodeType()==Node.ELEMENT_NODE) { 
                  System.out.println(scor.getNodeName()+":"+scor.getTextContent()+" "); 
                   
              } 
               
          } 
          System.out.println(); 
          } 
      } 
//删除信息 
public void delete() { 
  NodeList stulist = doc.getElementsByTagName("student"); 
  for (int i = 0; i < stulist.getLength(); i++) { 
      Element stu = (Element) stulist.item(i); 
      String den= stu.getAttribute("id"); 
           
          if (den.equals("1")) { 
              stu.getParentNode().removeChild(stu); 
          } 
      } 
  } 
//修改信息 
public void modify() { 
  NodeList list= doc.getElementsByTagName("student"); 
  for (int i = 0; i < list.getLength(); i++) { 
      Element score = (Element) list.item(i); 
      String sco = score.getAttribute("score"); 
      if (sco.equals("60")) { 
          score.setAttribute("score", "100"); 
      } 
  } 

//添加信息 
public void add() { 
  Element element= doc.createElement("student"); 
  Element names= doc.createElement("name"); 
  Element cou= doc.createElement("coures"); 
  Element sco= doc.createElement("score"); 
  //元素节点 
  Attr att=doc.createAttribute("id"); 
  att.setValue("4"); 
  //文本节点 
  Text textname=doc.createTextNode("王五");              
  Text textcoure =doc.createTextNode("JAVA");              
  Text textscore = doc.createTextNode("100");  
  //将文本节点添加到元素的子节点 
  names.appendChild(textname); 
  cou.appendChild(textcoure); 
  sco.appendChild(textscore); 
  //将元素的子节点添加到student 
  element.appendChild(names); 
  element.appendChild(cou); 
  element.appendChild(sco); 
  element.setAttributeNode(att); 
  //得到根元素 
  Element men=doc.getDocumentElement(); 
  men.appendChild(element); 
   
//保存信息 
public void conserve() { 
  TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
  try { 
      Transformer transformer = transformerFactory.newTransformer(); 
      DOMSource dom = new DOMSource(doc); 
      transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); 
      StreamResult result=new StreamResult(new FileOutputStream("newscores.xml")); 
      transformer.transform(dom, result); 
  } catch (TransformerConfigurationException e) { 
      // TODO 自动生成的 catch 块 
      e.printStackTrace(); 
  } catch (FileNotFoundException e) { 
      // TODO 自动生成的 catch 块 
      e.printStackTrace(); 
  } catch (TransformerException e) { 
      // TODO 自动生成的 catch 块 
      e.printStackTrace(); 
  } 
   
public static void main(String[] args) { 
  Score score=new Score(); 
  score.getDocument(); 
  score.modify();//修改 
  score.add();//添加 
  score.delete();//删除 
  score.conserve();//保存 
  score.showscore();//显示 

第四题使用DOM4J输出XML的信息 
package xml; 
import java.util.Iterator; 
import java.util.List; 
import org.dom4j.Attribute; 
import org.dom4j.Document; 
import org.dom4j.DocumentException; 
import org.dom4j.Element; 
import org.dom4j.io.SAXReader; 
public class Dom4jstuden { 
public void show() { 
   
try { 
   //读取XML文件,获得Document对象 
   SAXReader reader= new SAXReader(); 
   Document doc=reader.read("scores.xml"); 
   //获取文档根元素 
 Element stu= doc.getRootElement(); 
 //迭代元素节点 
 Iterator itertor = stu.elementIterator(); 
 while (itertor.hasNext()) { 
  // 
  Element pepo = (Element) itertor.next(); 
  List<Attribute> syuatt= pepo.attributes(); 
  for (Attribute attribute : syuatt) { 
      System.out.println(attribute.getName()+":"+attribute.getValue()); 
  }//迭代子节点 
   Iterator tyep= pepo.elementIterator(); 
   while (tyep.hasNext()) { 
      Element info = (Element) tyep.next(); 
      System.out.println(info.getName()+":"+info.getStringValue()); 
  } 

} catch (DocumentException e) { 
  // TODO 自动生成的 catch 块 
  e.printStackTrace(); 


public static void main(String[] args) { 
  Dom4jstuden dom4jstuden=new Dom4jstuden(); 
  dom4jstuden.show(); 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值