从java数据结构创建xml字符串
我有3个数据结构 ArrayList空包 HashMap数据库元数据从java数据结构创建xml字符串,java,Java,我有3个数据结构 ArrayList空包 HashMap数据库元数据 databaseMetadata.put("NUM","1"); databaseMetadata.put("NAME","DAVE"); databaseMetadata.put("SAL",""); HashMap标记元数据 tagsTometadata.put("emp_no","NUM"); tagsTometadata.put("emp_name","NAME"); tagsTometadata.put("emp_
databaseMetadata.put("NUM","1");
databaseMetadata.put("NAME","DAVE");
databaseMetadata.put("SAL","");
HashMap标记元数据
tagsTometadata.put("emp_no","NUM");
tagsTometadata.put("emp_name","NAME");
tagsTometadata.put("emp_sal","SAL");
空包包含
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");
基于以上,我必须迭代list emptags对象,检索list中的每个元素,我必须从hashmap中获取元数据元素
tagsTometadata及其值来自databaseMetadata。最后,我必须构建以下xml:
<emp>
<emp_no>1</emp_no>
<emp_name>DAVE</emp_name>
<emp_sal/> //because there is no value
</emp>
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();
}
}
}
导入java.io.File;
导入java.util.ArrayList;
导入java.util.HashMap;
导入java.util.Iterator;
导入java.util.Map;
导入javax.xml.parsers.DocumentBuilder;
导入javax.xml.parsers.DocumentBuilderFactory;
导入javax.xml.transform.Transformer;
导入javax.xml.transform.TransformerFactory;
导入javax.xml.transform.dom.DOMSource;
导入javax.xml.transform.stream.StreamResult;
导入org.w3c.dom.Document;
导入org.w3c.dom.Element;
公共类数据
{
静态ArrayList emptags=新ArrayList();
静态HashMap databaseMetadata=新HashMap();
静态HashMap tagsTometadata=新HashMap();
公共空白填充(){
清空标签。添加(“emp_编号”);
清空标签。添加(“emp_名称”);
清空。添加(“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”);
}
公共静态void main(字符串参数[]){
数据d=新数据();
d、 填充();
系统输出打印项次(清空标签);
试一试{
DocumentBuilderFactory docFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder=docFactory.newDocumentBuilder();
Document doc=docBuilder.newDocument();
元素rootElement=doc.createElement(“emp”);
doc.appendChild(rootElement);
对于(inti=0;i这里,这个程序有主类,只需即插即用…[确保更改文件路径]
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();
}
}
}
导入java.io.File;
导入java.util.ArrayList;
导入java.util.HashMap;
导入java.util.Iterator;
导入java.util.Map;
导入javax.xml.parsers.DocumentBuilder;
导入javax.xml.parsers.DocumentBuilderFactory;
导入javax.xml.transform.Transformer;
导入javax.xml.transform.TransformerFactory;
导入javax.xml.transform.dom.DOMSource;
导入javax.xml.transform.stream.StreamResult;
导入org.w3c.dom.Document;
导入org.w3c.dom.Element;
公共类数据
{
静态ArrayList emptags=新ArrayList();
静态HashMap databaseMetadata=新HashMap();
静态HashMap tagsTometadata=新HashMap();
公共空白填充(){
清空标签。添加(“emp_编号”);
清空标签。添加(“emp_名称”);
清空。添加(“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”);
}
公共静态void main(字符串参数[]){
数据d=新数据();
d、 填充();
系统输出打印项次(清空标签);
试一试{
DocumentBuilderFactory docFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder=docFactory.newDocumentBuilder();
Document doc=docBuilder.newDocument();
元素rootElement=doc.createElement(“emp”);
doc.appendChild(rootElement);
对于(int i=0;i不用手工编写所有这些代码,您可以看看一些javaxml绑定工具,比如JAXB。我不太明白您的问题是什么?主题行的确切含义是什么,您的代码在上面显示了您的问题是什么?列表维护xml标记列表,一个hashmap维护数据库列名称和值,另一个hasmap维护数据库列名称和值ase列名称和xml元素名称。基于此,我必须构造xml@user2610401我已经尝试过一些东西,或者你只是想要一些代码?如果你尝试过一些东西,请发布你的代码,这样我们可以提供帮助。你可以看看一些javaxml绑定工具,比如JAXB,而不是手工编码。我不太明白你的问题是什么?什么实际上,你的主题行的意思是,你的代码在上面显示了你的问题是什么?列表维护xml标记列表,一个hashmap维护数据库列名和值,另一个hasmap维护数据库列名和xml元素名。基于此,我必须构建xml@user2610401我已经试过了,或者你只是想要密码?如果您尝试了一些方法,请发布您的代码,以便我们提供帮助。