0
我打算在java對象的較大xml文件中創建具有相同標記的xml文件。即我需要每次運行一個循環時追加xml文件。 我已經將xml字段名稱和值作爲鍵/值對存儲在HashMap結構中。使用java創建包含存儲在hashmap中的多個xml內容的xml文件
預期:單個大型xml文件中的多個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();
}
}
你知道一個有效的xml文檔必須有一個根節點嗎? – Taylor