使用java创建包含hashmap中存储的多个xml内容的xml文件
我打算从java对象在更大的xml文件中创建具有相同标记的xml文件。i、 每次运行循环时,我都需要附加xml文件。 我已经将xml字段名和值作为键/值对存储在HashMap结构中 预期:单个大型xml文件中包含多个xml内容 实际:生成文件,但未写入任何标记/值。只打印整个文件的开始和结束标记 代码:使用java创建包含hashmap中存储的多个xml内容的xml文件,java,xml,Java,Xml,我打算从java对象在更大的xml文件中创建具有相同标记的xml文件。i、 每次运行循环时,我都需要附加xml文件。 我已经将xml字段名和值作为键/值对存储在HashMap结构中 预期:单个大型xml文件中包含多个xml内容 实际:生成文件,但未写入任何标记/值。只打印整个文件的开始和结束标记 代码: 试试{ DocumentBuilderFactory docFactory=DocumentBuilderFactory.newInstance(); DocumentBuilder docBu
试试{
DocumentBuilderFactory docFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder=docFactory.newDocumentBuilder();
//根元素
Document doc=docBuilder.newDocument();
元素rootElement=doc.createElement(“添加”);
doc.appendChild(rootElement);
//文档元素
元素文档=doc.createElement(“文档”);
appendChild(文档);
迭代器itr1=hMap.entrySet().Iterator();
System.out.println(“--------------页面开始-----------------”;
while(itr1.hasNext()){
Map.Entry pairs=(Map.Entry)itr1.next();
System.out.println(pairs.getKey()+“=”+pairs.getValue());
//itr1.remove();//避免ConcurrentModificationException
//字符串s=pairs.getKey().toString();
元素字段=doc.createElement(“字段”);
field.appendChild(doc.createTextNode(pairs.getValue().toString());
field.setAttribute(“name”,pairs.getKey().toString());
文档.附件子项(字段);
}
System.out.println(“-------------------页面停止--------------------”;
//将内容写入xml文件
TransformerFactory TransformerFactory=TransformerFactory.newInstance();
Transformer Transformer=transformerFactory.newTransformer();
DOMSource=新的DOMSource(doc);
StreamResult=newstreamresult(新文件(“D:\\Infoboxinxml.xml”);
//输出到控制台进行测试
//StreamResult结果=新的StreamResult(System.out);
变换(源、结果);
System.out.println(“文件已保存!”);
}捕获(ParserConfiguration异常pce){
pce.printStackTrace();
}捕获(TransformerException tfe){
tfe.printStackTrace();
}
}
这将是使用现代DOM解析器最简单的方法,例如
Document Document=新文档();
元素根=新元素(“添加”);
要素单据=新要素(“单据”);
document.addContent(根目录);
root.addContent(doc);
Map Map=newlinkedhashmap();
地图放置(“键1”、“值1”);
地图放置(“键2”、“值2”);
地图放置(“键3”、“值3”);
for(Map.Entry对:Map.entrySet()){
doc.addContent(
新元素(“字段”)
.setAttribute(“名称”,pair.getKey())
.setText(pair.getValue())
);
}
System.out.println(新的XMLOutputer(Format.getPrettyFormat()).outputString(document));
您知道一个有效的xml文档必须有一个根节点,对吗?
try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
// root elements
Document doc = docBuilder.newDocument();
Element rootElement = doc.createElement("add");
doc.appendChild(rootElement);
// document elements
Element document = doc.createElement("doc");
rootElement.appendChild(document);
Iterator<Entry<String, String>> itr1 = hMap.entrySet().iterator();
System.out.println("-----------------Page start---------------------");
while (itr1.hasNext()) {
Map.Entry pairs = (Map.Entry)itr1.next();
System.out.println(pairs.getKey() + "=== " + pairs.getValue());
//itr1.remove(); // avoids a ConcurrentModificationException
//String s = pairs.getKey().toString();
Element field = doc.createElement("field");
field.appendChild(doc.createTextNode(pairs.getValue().toString()));
field.setAttribute("name", pairs.getKey().toString());
document.appendChild(field);
}
System.out.println("-------------------Page stop------------------------");
// write the content into xml file
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("D:\\Infoboxinxml.xml"));
// Output to console for testing
//StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
System.out.println("File saved!");
} catch (ParserConfigurationException pce) {
pce.printStackTrace();
} catch (TransformerException tfe) {
tfe.printStackTrace();
}
}
Document document = new Document();
Element root = new Element("add");
Element doc = new Element("doc");
document.addContent(root);
root.addContent(doc);
Map<String, String> map = new LinkedHashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
for (Map.Entry<String, String> pair : map.entrySet()) {
doc.addContent(
new Element("field")
.setAttribute("name", pair.getKey())
.setText(pair.getValue())
);
}
System.out.println(new XMLOutputter(Format.getPrettyFormat()).outputString(document));