Java创建xml与排序

package com.lzb.model.xml;

import java.io.File;
import java.io.FileOutputStream;
import java.util.Map;

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;

/**
 * 测试采用DOM的方式生成XML
 * @author lizhenbin
 *
 */
public class DomCreateXml {
 
 /**
  * 参考
  * @param obj
  * @param path
  * @return
  */
 public static boolean domCreateXmlDoc() {
  
  try {
   /**
    * 初始化
    */
   Document doc = null;
   DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
   DocumentBuilder docBuilder = dbfactory.newDocumentBuilder();
   doc = docBuilder.newDocument();
   /**
    * 创建XML的根节点(根)
    */
   Element root = doc.createElement("xml_root"); //XML的根节点
   doc.appendChild(root);
   
   for(int i=0; i<3; i++) {
    String _s = "child_" + i;
    Element _child = doc.createElement(_s);
    root.appendChild(_child);
    for(int j=0; j<2; j++) {
     String _s_s = _s + "_" + j;
     Element _c_child = doc.createElement(_s_s);
     _c_child.appendChild(doc.createTextNode("城市编码: SN" + _s_s));
     _child.appendChild(_c_child);
    }
   }
   /**
    * 结束拼凑XML
    */
   TransformerFactory tff = TransformerFactory.newInstance();
   Transformer transformer = tff.newTransformer();
   /**
    * xml输出的位置
    */
   File file = new File("E://testcreate.xml");
   FileOutputStream out = new FileOutputStream(file);
   StreamResult xmlResult = new StreamResult(out);
   transformer.setOutputProperty(OutputKeys.INDENT, "yes");
   transformer.transform(new DOMSource(doc), xmlResult);
   
   return true;
   
  } catch (Exception e) {
   e.printStackTrace();
   return false;
  }
 }

}

SAX创建xml

package com.lzb.model.xml;

import java.io.File;
import java.io.FileOutputStream;
import java.io.StringWriter;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
import javax.xml.transform.Transformer;
import javax.xml.transform.sax.SAXTransformerFactory;
import javax.xml.transform.sax.TransformerHandler;
import javax.xml.transform.stream.StreamResult;

import org.xml.sax.helpers.AttributesImpl;


/**
 * 测试才用SAX的方式生成XML
 * @author lizhenbin
 *
 */
public class SaxCreateXml {
 
 /**
  *
  * 功能描述:
  *
  * @author  lizhenbin
  * <p>创建日期 :May 8, 2012 7:09:13 PM</p>
  *
  * @throws Exception
  *
  * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
  */
 public static void saxCreateXmlDoc() throws Exception {
  
  String xmlStr = null;
  //String dstPath = ServletActionContext.getServletContext().getRealPath(this.getSavePath()) + "\\" + this.getUploadFileName();
  Result resultXml = new StreamResult(new FileOutputStream("E://sax_xml.xml"));
  StringWriter writerStr = new StringWriter();
  
  SAXTransformerFactory sff = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
  TransformerHandler th = sff.newTransformerHandler();
  
  Transformer transformer = th.getTransformer();
  transformer.setOutputProperty(OutputKeys.INDENT, "yes");
  transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
  th.setResult(resultXml); 
  
  /**
   * 拼凑xml, SAX的方式,每个都有开启和结束配对
   */
  th.startDocument();
  AttributesImpl attr = new AttributesImpl();
  th.startElement("", "", "root", attr);   //根节点
  for(int i=0; i<2; i++) {
   String _c = "child_" + i;
   th.startElement("", "", _c, attr);
   for(int j=0; j<3; j++) {
    String _c_c = _c + "_" +j;
    th.startElement("", "", _c_c, attr);
    for(int k=0; k<2; k++) {
     String _c_c_c = _c_c + "_" + k;
     String txt = "城市编号:" + _c_c_c;
     th.startElement("", "", _c_c_c, attr);
     th.characters(txt.toCharArray(), 0, txt.length());
     th.endElement("", "", _c_c_c);
    }
    th.endElement("", "", _c_c);
   }
   th.endElement("", "", _c);
  }
  th.endElement("", "", "root");
  th.endDocument();
  
//  th.startDocument();
//  AttributesImpl attr = new AttributesImpl();
//  th.startElement("", "", "xmlroot", attr);   //根节点
//  th.startElement("", "", "child", attr); //孩子
//  
//  th.startElement("", "", "context", attr); //内容
//  String content1 = "北京";
//  th.characters(content1.toCharArray(), 0, content1.length());
//  th.endElement("", "", "context");
//  
//  th.startElement("", "", "context", attr); //内容
//  String content2 = "上海";
//  th.characters(content2.toCharArray(), 0, content2.length());
//  th.endElement("", "", "context");
//  
//  th.endElement("", "", "child");
//  th.endElement("", "", "xmlroot");
//  th.endDocument();
  
  /**
   * 结束
   */
  xmlStr = writerStr.getBuffer().toString();
  
  //return xmlStr;
 }
}

最后补充一下排序算法,主要是因为我创建xml的时候,想自己写个方法排序

package com.lzb.model.sort;
/**
 *
 * 功能描述:排序
 *
 * @author  Administrator
 *
 * <p>修改历史:(修改人,修改时间,修改原因/内容)</p>
 */
public class SortAlgorithm {
 
 /**
  *
  * 功能描述:冒泡排序算法(稳定)
  *    假设有N个数据需要排序,则从第0个数开始,依次比较第0和第1个数据,
    如果第0个大于第1个则两者交换,否则什么动作都不做,继续比较第1个第2
    个…,这样依次类推,直至所有数据都“冒泡”到数据顶上。
  *
  * @author  Administrator
  * <p>创建日期 :2012-3-16 下午4:27:20</p>
  *
  *
  * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
  */
 public void bubbleSort(int[] targets) {
  
  boolean flag;
  for(int i=0; i<targets.length-1; i++) {
   flag = true;
   for(int j=0; j<targets.length-i-1; j++) {   
    if(targets[j] > targets[j+1]) {
     int temp = targets[j];
     targets[j] = targets[j+1];
     targets[j+1] = temp;
     flag = false;
    }
   }
   if(flag==true)
    break;
  }  
  for(Integer i : targets) {
   System.out.print(i + " ");
  }
 }
 
 /**
  *
  * 功能描述:选择排序算法(不稳定)
  *    假设有N条数据,则暂且标记第0个数据为MIN(最小),使用OUT标记最左
    边未排序的数据,然后使用IN标记第1个数据,依次与MIN进行比较,如果比
    MIN小,则将该数据标记为MIN,当第一轮比较完后,最终的MIN与OUT标记
    数据交换,依次类推;
  *
  * @author  Administrator
  * <p>创建日期 :2012-3-16 下午5:21:23</p>
  *
  *
  * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
  */
 public void selectSort(int[] targets) {
  
  boolean flag;
  for(int i=0; i<targets.length-1; i++) { 
   flag = true;
   for(int j=i+1; j<targets.length; j++) {
    if(targets[i] > targets[j]) {
     int temp = targets[j];
     targets[j] = targets[i];
     targets[i] = temp;
     flag = false;
    }
   }
   if(flag==true)
    break;
  }  
  for(Integer i : targets) {
   System.out.print(i + " ");
  }  
 }
/* 
 /**
  *
  * 功能描述:插入排序算法(稳定)
  *    插入排序是在部分数据有序的情况下,使用OUT标记第一个无序的数据,将
    其提取保存到一个中间变量temp中去,使用IN标记空位置,依次比较temp中
    的值与IN‐1的值,如果IN‐值大于temp的值,则后移,直到遇到第一个比temp
    小的值,在其下一个位置插入;
  *
  * @author  Administrator
  * <p>创建日期 :2012-3-18 下午2:27:16</p>
  *
  * @param targets
  *
  * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
  */
 public void InsertionSort(int[] targets) {
  
 }
*/ 
 public static void main(String[] args) {
  
  SortAlgorithm sort = new SortAlgorithm();
  int[] _istore =  {4,2,3,0,1,3,-2,10};
  sort.selectSort(_istore);
  System.out.println("\n--------------------------");
  sort.bubbleSort(_istore);
 }
}

 

你可能感兴趣的:(Java创建xml与排序)