1

我有 3 个数据结构

ArrayList 空标签

HashMap 数据库元数据

HashMap标签Tom元数据

空标签包含

emptags.add("emp_no");

emptags.add("emp_name");

emptags.add("emp_sal");

数据库元数据

databaseMetadata.put("NUM","1");
databaseMetadata.put("NAME","DAVE");
databaseMetadata.put("SAL","");

标签番茄元数据

tagsTometadata.put("emp_no","NUM");
tagsTometadata.put("emp_name","NAME");
tagsTometadata.put("emp_sal","SAL");

基于上述,我必须迭代列表emptags对象,检索列表中的每个elemnet我必须从hashmap中获取元数据元素

tagsTometadata 和它的值来自 databaseMetadata.finally 我必须在 xml 下构造:

<emp>

  <emp_no>1</emp_no>
  <emp_name>DAVE</emp_name>
  <emp_sal/> //because there is no value

</emp>      
4

1 回答 1

1

给你,这个程序有主类,即插即用...【一定要改文件路径】

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
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;

public class Datas
{
   static ArrayList<String> emptags = new ArrayList<String>();

   static HashMap<String, String> databaseMetadata = new HashMap<String, String>();

   static HashMap<String, String> tagsTometadata = new HashMap<String, String>();

   public void populate(){
      emptags.add("emp_no");

      emptags.add("emp_name");

      emptags.add("emp_sal");



      databaseMetadata.put("NUM","1");
      databaseMetadata.put("NAME","DAVE");
      databaseMetadata.put("SAL","");



      tagsTometadata.put("emp_no","NUM");
      tagsTometadata.put("emp_name","NAME");
      tagsTometadata.put("emp_sal","SAL");
   }

   public static void main(String args[]){
      Datas d = new Datas();
      d.populate();
      System.out.println(emptags);
      try{
         DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
         DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
         Document doc = docBuilder.newDocument();
         Element rootElement = doc.createElement("emp");
         doc.appendChild(rootElement);
         for(int i=0;i<emptags.size();i++){
            Element newElement = doc.createElement(emptags.get(i));
            if(tagsTometadata.containsKey(emptags.get(i))){
               if(databaseMetadata.containsKey(tagsTometadata.get(emptags.get(i)))){
                  newElement.appendChild(doc.createTextNode(databaseMetadata.get(tagsTometadata.get(emptags.get(i)))));
               }
            }

            rootElement.appendChild(newElement);
         }
         TransformerFactory transformerFactory = TransformerFactory.newInstance();
         Transformer transformer = transformerFactory.newTransformer();
         DOMSource source = new DOMSource(doc);
         StreamResult result = new StreamResult(new File("C:\\users\\Arun\\Desktop\\file1.xml"));

         // Output to console for testing
         // StreamResult result = new StreamResult(System.out);

         transformer.transform(source, result);

         System.out.println("File saved!");

      }
      catch(Exception e){
         e.printStackTrace();
      }

   }
}
于 2013-07-24T15:20:46.337 回答