Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java创建包含hashmap中存储的多个xml内容的xml文件_Java_Xml - Fatal编程技术网

使用java创建包含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

我打算从java对象在更大的xml文件中创建具有相同标记的xml文件。i、 每次运行循环时,我都需要附加xml文件。 我已经将xml字段名和值作为键/值对存储在HashMap结构中

预期:单个大型xml文件中包含多个xml内容 实际:生成文件,但未写入任何标记/值。只打印整个文件的开始和结束标记

代码:

试试{
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));