简体   繁体   English

从Java数据结构创建xml字符串

[英]creating xml string from java data structures

I have 3 data structures 我有3个数据结构

ArrayList emptags ArrayList清空

HashMap databaseMetadata HashMap数据库元数据

HashMap tagsTometadata HashMap标签

emptags contains emptags包含

emptags.add("emp_no");

emptags.add("emp_name");

emptags.add("emp_sal");

databaseMetadata DatabaseMetaData的

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

tagsTometadata tagsTometadata

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

Based on above,I have to iterate list emptags object,retrieval of each elemnet in list i have to get the metadata element from hashmap 基于以上,我必须迭代列表emptags对象,列表中每个elemnet的检索我必须从hashmap获取元数据元素

tagsTometadata and it's value from databaseMetadata.finally i have to construct below xml: tagsTometadata及其来自databaseMetadata.final的值最后我必须在xml之下构建:

<emp>

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

</emp>      

Here you go, This program has the main class, just plug and play... [Make sure to change the file path] 到这里,该程序具有主类,只需即插即用... [请确保更改文件路径]

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();
      }

   }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM