package net.ms.designer.editors.enumcomponentdetail.tools; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import net.ms.designer.core.MsElement; import net.ms.designer.core.MsProject; import net.ms.designer.core.IOStreams; import net.ms.designer.editors.enumcomponentdetail.model.Container; import net.ms.designer.editors.enumcomponentdetail.model.Table; import net.ms.designer.editors.enumcomponentdetail.model.ValueField; import org.w3c.dom.CDATASection; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Text; public class WriteToEnumXML { private Container container; private Table table; private List fields = new ArrayList(); private MsProject project; private MsElement element; public WriteToEnumXML(MsElement obj, MsProject project) { this.element = obj; this.container = (Container)obj.getContainer(); if(container.getChildren().size() > 0) { Iterator i = container.getChildren().iterator(); table = (Table)i.next(); } if(table.getChildren().size() > 0) { for(Iterator i = table.getChildren().iterator(); i.hasNext();) { fields.add(i.next()); } } this.project = project; } public void writeXMLFile(String outFile) throws Exception{ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; try { db = dbf.newDocumentBuilder(); } catch (ParserConfigurationException pce) { System.err.println(pce); System.exit(1); } Document doc = null; doc = db.newDocument(); // �����ǽ���XML�ĵ����ݵĹ��̣��Ƚ�����Ԫ�� Element root = doc.createElement("enumeraion"); // ��Ԫ��������ĵ� // doc.appendChild(root); // fullname����ȫ����ʵ�ʵ��õ�·���� Element fullname = doc.createElement("fullname"); StringBuffer sb = new StringBuffer(project.getGenPackageName()); // sb.append("."); // sb.append(project.getProjectName()); sb.append("."); sb.append(element.getParent().getNodeName()); sb.append("."); sb.append(element.getNodeName()); Text fullname_model = doc.createTextNode(sb.toString()); fullname.appendChild(fullname_model); root.appendChild(fullname); // path�·��(xml�ļ���) Element path = doc.createElement("path"); sb = new StringBuffer(project.getProjectName()); sb.append("."); sb.append(element.getParent().getNodeName()); sb.append("."); sb.append(element.getNodeName()); Text path_model = doc.createTextNode(sb.toString()); path.appendChild(path_model); root.appendChild(path); // name����� Element name = doc.createElement("name"); Text name_model = doc.createTextNode(table.getTableName()); name.appendChild(name_model); root.appendChild(name); //iname����ʻ����� if(!table.getIname().equals("")) { Element iname = doc.createElement("iname"); CDATASection iname_model = doc.createCDATASection(table.getIname()); iname.appendChild(iname_model); root.appendChild(iname); } // desc�������� if(!table.getDesc().equals("")) { Element desc = doc.createElement("desc"); CDATASection desc_model = doc.createCDATASection(table.getDesc()); desc.appendChild(desc_model); root.appendChild(desc); } //positionx���������xֵ Element positionx = doc.createElement("positionx"); int x = table.getLocation().x; String sx = String.valueOf(x); Text positionx_model = doc.createTextNode(sx); positionx.appendChild(positionx_model); root.appendChild(positionx); //positiony���������yֵ Element positiony = doc.createElement("positiony"); int y = table.getLocation().y; String sy = String.valueOf(y); Text positiony_model = doc.createTextNode(sy); positiony.appendChild(positiony_model); root.appendChild(positiony); //values�ö����������� Element values = doc.createElement("values"); ValueField field; //ö����������ݣ�����ж��ֵ���ж��value����ʽ��ͬ,��forѭ��"---"������ݼ��ɣ��кţ�82-99 //-------------- for(int i = 0; i< fields.size(); i++) { field = (ValueField)fields.get(i); Element value = doc.createElement("value"); Element id = doc.createElement("id"); Text id_model = doc.createTextNode(String.valueOf(i+1)); id.appendChild(id_model); value.appendChild(id); Element residstr = doc.createElement("residstr"); Text residstr_model = doc.createTextNode(field.getFieldName()); residstr.appendChild(residstr_model); value.appendChild(residstr); if(!field.getIname().equals("")) { Element viname = doc.createElement("iname"); CDATASection viname_model = doc.createCDATASection(field.getIname()); viname.appendChild(viname_model); value.appendChild(viname); } values.appendChild(value); } //--------------- root.appendChild(values); doc.appendChild(root); // ��XML�ĵ������ָ�����ļ� try { // FileOutputStream outStream = new FileOutputStream(outFile); // OutputStreamWriter outWriter = new OutputStreamWriter(outStream,"UTF-8"); // ((XmlDocument) doc).write(outWriter, "UTF-8"); //Ӧ��utf-8���뷽ʽ // outWriter.close(); // outStream.close(); IOStreams ioStreams = new IOStreams (); ioStreams.transformToFile(doc,outFile); } catch(Exception e) { e.printStackTrace(); } } }