Java与XML(二):用Java编写XML的读写程序

来源:岁月联盟 编辑:zhuzhu 时间:2008-12-18

  这是读取xml文件的java程序,我调试好的。采用的是dom方式读取xml文件到Vector中。

 package src;
  import java.io.*;
  import java.util.Vector;
  import javax.xml.parsers.*;
  import org.w3c.dom.*;
  public class readxml {
   static Document document;
   private boolean validating;
   public readxml() {
   }
   public Vector toRead(String filename) {
   Vector title=new Vector();
   Vector content=new Vector();
   String myStr=new String();
   try {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setValidating(validating);
    DocumentBuilder builder = factory.newDocumentBuilder();
    document = builder.parse(new File(filename));
    document.getDocumentElement().normalize();
    Node node = document.getFirstChild();
    NodeList list = node.getChildNodes();
    for (int i = 0; i < list.getLength(); i++) {
    Node nodeitm = list.item(i);
    if (nodeitm.getNodeName().equals("Title")) {
     myStr=nodeitm.getFirstChild().getNodeValue();
     title.addElement(myStr);//getFirstChild()
    }
    if (nodeitm.getNodeName().equals("Content")) {
     myStr=nodeitm.getFirstChild().getNodeValue();
     content.addElement(myStr);
    }
    }
   } catch (Exception exp) {
    exp.printStackTrace();
    return null;
   }
   Vector all=new Vector();
   all.add(title);
   all.add(content);
   return all;
   }
  
   public static void main(String[] args) {
   Vector A;
   readxml my = new readxml();
   A = my.toRead("f: omcat5webappsmyxmlxmldata9.xml");
   for (int i = 0; i < A.size(); i++) {
    System.out.println(A.elementAt(i));
   }
   }
  }

  这是将xml写入文件。其中,transformer.setOutputProperty(OutputKeys.ENCODING,"GB2312")关系到编码问题,非常重要。

  import org.w3c.dom.*;
  import javax.xml.parsers.*;
  import javax.xml.transform.*;
  import javax.xml.transform.dom.DOMSource;
  import javax.xml.transform.stream.StreamResult;
  import java.io.*;
  public class writexml {
   private Document document;
   private String filename;
  
   public writexml(String name) throws ParserConfigurationException{
   filename=name;
   DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
   DocumentBuilder builder=factory.newDocumentBuilder();
   document=builder.newDocument();
   }
   public void toWrite(String mytitle,String mycontent){
     Element root=document.createElement("WorkShop");
   document.appendChild(root);
   Element title=document.createElement("Title");
   title.appendChild(document.createTextNode(mytitle));
   root.appendChild(title);
   Element content=document.createElement("Content");
   content.appendChild(document.createTextNode(mycontent));
   root.appendChild(content);
   }
   public void toSave(){
   try{
    TransformerFactory tf=TransformerFactory.newInstance();
    Transformer transformer=tf.newTransformer();
    DOMSource source=new DOMSource(document);
    transformer.setOutputProperty(OutputKeys.ENCODING,"GB2312");
    transformer.setOutputProperty(OutputKeys.INDENT,"yes");
    PrintWriter pw=new PrintWriter(new FileOutputStream(filename));
    StreamResult result=new StreamResult(pw);
    transformer.transform(source,result);
   }
   catch(TransformerException mye){
    mye.printStackTrace();
   }
   catch(IOException exp){
    exp.printStackTrace();
   }
   }
   public static void main(String args[]){
   try{
   writexml myxml=new writexml("f: omcat5webappsmyxmlxmldata9.xml");
   myxml.toWrite("中文题目","中文内容");
   myxml.toSave();
   System.out.print("Your writing is successful.");
   }
   catch(ParserConfigurationException exp){
    exp.printStackTrace();
    System.out.print("Your writing is failed.");
   }
   }
  }