63a628625def3b3addc083a5712d749f0901c377.svn-base 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. package xin.glue.ui.G.G07;
  2. import java.io.FileOutputStream;
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileWriter;
  6. import java.io.IOException;
  7. import java.io.OutputStream;
  8. import java.io.InputStream;
  9. import javax.xml.parsers.DocumentBuilder;
  10. import javax.xml.parsers.DocumentBuilderFactory;
  11. import javax.xml.parsers.ParserConfigurationException;
  12. import org.w3c.dom.Document;
  13. import org.w3c.dom.Element;
  14. import org.w3c.dom.Node;
  15. import org.w3c.dom.NodeList;
  16. import org.xml.sax.SAXException;
  17. import com.sun.org.apache.xerces.internal.dom.DocumentImpl;
  18. import com.sun.org.apache.xml.internal.serialize.OutputFormat;
  19. import com.sun.org.apache.xml.internal.serialize.XMLSerializer;
  20. import java.util.Hashtable;
  21. import java.util.ArrayList;
  22. public class DomXmlParser{
  23. DocumentBuilderFactory domfac = null;
  24. DocumentBuilder dombuilder = null;
  25. private ArrayList items = new ArrayList();
  26. String revStr = null;
  27. String xpath = null;
  28. String docId = null;
  29. private int strLenTagFrom = 0;
  30. private int strLenTagto = 0;
  31. public DomXmlParser( String xpath){
  32. this.xpath = "E:\\XML_PARSE\\" + xpath + "-msg.xml";
  33. }
  34. public void setRevStr(String revStr){
  35. this.revStr = revStr;
  36. }
  37. public ArrayList getItems(){
  38. return items;
  39. }
  40. public void runDomXmlParser(){
  41. try{
  42. domfac=DocumentBuilderFactory.newInstance();
  43. dombuilder=domfac.newDocumentBuilder();
  44. InputStream is = new FileInputStream(xpath);
  45. Document doc=dombuilder.parse(is);
  46. Element root=doc.getDocumentElement();
  47. NodeList msgs=root.getChildNodes();
  48. if(msgs != null){
  49. for(int i = 0 ; i< msgs.getLength() ; i++){
  50. Node msg = msgs.item(i);
  51. if(msg.getNodeType() == Node.ELEMENT_NODE){
  52. docId = msg.getAttributes().getNamedItem("id").getNodeValue();
  53. NodeList attributes = msg.getChildNodes();
  54. if(attributes != null){
  55. for(int j = 0 ; j < attributes.getLength() ; j++){
  56. Node attribute = attributes.item(j);
  57. if(attribute.getNodeType() == Node.ELEMENT_NODE){
  58. Hashtable ht = new Hashtable();
  59. String seq = attribute.getAttributes().getNamedItem("seq").getNodeValue();
  60. String id = attribute.getAttributes().getNamedItem("id").getNodeValue();
  61. String name = attribute.getAttributes().getNamedItem("name").getNodeValue();
  62. String datatype = attribute.getAttributes().getNamedItem("datatype").getNodeValue();
  63. String length = attribute.getAttributes().getNamedItem("length").getNodeValue();
  64. ht.put("seq",seq);
  65. ht.put("id",id);
  66. ht.put("name",name);
  67. ht.put("datatype",datatype);
  68. ht.put("length",length);
  69. items.add(ht);
  70. }
  71. }
  72. }
  73. }
  74. }
  75. }
  76. } catch (ParserConfigurationException e){
  77. e.printStackTrace();
  78. } catch (FileNotFoundException e){
  79. e.printStackTrace();
  80. } catch (SAXException e){
  81. e.printStackTrace();
  82. } catch (IOException e){
  83. e.printStackTrace();
  84. }
  85. }
  86. private void displayItes(){
  87. for(int i=0;i<items.size();i++){
  88. Hashtable data = (Hashtable)items.get(i);
  89. System.out.print (data.get("seq") + "---");
  90. System.out.print (data.get("id") + "---");
  91. System.out.print (data.get("name") + "---");
  92. System.out.print (data.get("datatype") + "---");
  93. System.out.println (data.get("length"));
  94. }
  95. }
  96. private void displayItes2(){
  97. for(int i=0;i<items.size();i++){
  98. Hashtable data = (Hashtable)items.get(i);
  99. System.out.print (data.get("seq") + "---");
  100. System.out.print (data.get("id") + "---");
  101. System.out.print (data.get("value") + "---");
  102. System.out.print (data.get("name") + "---");
  103. System.out.print (data.get("datatype") + "---");
  104. System.out.println (data.get("length"));
  105. }
  106. }
  107. public void cutStr(){
  108. for(int i=0;i<items.size();i++){
  109. Hashtable data = (Hashtable)items.get(i);
  110. try{
  111. strLenTagto += Integer.parseInt((String)data.get("length"));
  112. String tempStr = revStr.substring(strLenTagFrom,strLenTagto);
  113. data.put("value", tempStr);
  114. strLenTagFrom += Integer.parseInt((String)data.get("length"));
  115. }catch(Exception e){
  116. e.printStackTrace();
  117. }
  118. }
  119. strLenTagto = 0;
  120. strLenTagFrom = 0;
  121. }
  122. private void createXmlFile(){
  123. // 下面是建立XML文档内容的过程,
  124. // 先建立根元素"msgs"
  125. Document doc = new DocumentImpl();
  126. Element root = doc.createElement("msgs");
  127. // 根元素添加上文档
  128. doc.appendChild(root);
  129. // 建立"msg"元素,添加到根元素
  130. Element msg = doc.createElement("msg");
  131. msg.setAttribute("id", docId);
  132. root.appendChild(msg);
  133. // 建立"attribute"元素,添加到msg下面,
  134. for(int i=0;i<items.size();i++){
  135. Element attribute = doc.createElement("attribute");
  136. Hashtable data = (Hashtable)items.get(i);
  137. attribute.setAttribute("seq",(String)data.get("seq"));
  138. attribute.setAttribute("id",(String)data.get("id"));
  139. attribute.setAttribute("value",(String)data.get("value"));
  140. attribute.setAttribute("name",(String)data.get("name"));
  141. attribute.setAttribute("datatype",(String)data.get("datatype"));
  142. attribute.setAttribute("length",(String)data.get("length"));
  143. msg.appendChild(attribute);
  144. }
  145. try{
  146. // OutputStream os = new FileOutputStream("E:\\XML_PARSE\\test.xml");
  147. doc.setXmlVersion("1.0");
  148. OutputFormat format = new OutputFormat(doc);
  149. format.setLineSeparator("\n");
  150. format.setIndenting(true);
  151. format.setEncoding("GB2312");
  152. FileWriter fout = new FileWriter("E:\\XML_PARSE\\test.xml");
  153. XMLSerializer serial = new XMLSerializer(fout, format);
  154. serial.asDOMSerializer();
  155. serial.serialize(doc.getDocumentElement());
  156. fout.close();
  157. }catch(Exception e){
  158. e.printStackTrace();
  159. }
  160. }
  161. /*public static void main(String[] args){
  162. DomXmlParser xmlPs = new DomXmlParser();
  163. xmlPs.displayItes();
  164. xmlPs.cutStr();
  165. xmlPs.displayItes2();
  166. xmlPs.createXmlFile();
  167. }*/
  168. }