Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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 doc.createElement()忘记了开头“_Java_Xml - Fatal编程技术网

Java doc.createElement()忘记了开头“

Java doc.createElement()忘记了开头“,java,xml,Java,Xml,我正在开发一个Java应用程序,我必须映射大量数据,然后生成一个XML输出 除了这1个随机元素外,所有输出看起来都很好。正如您在下面的图像中所看到的,除了突出显示的1之外,所有的值标记看起来都很好 用于生成XML的代码: private void generateXML() { try { DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); Document

我正在开发一个Java应用程序,我必须映射大量数据,然后生成一个XML输出

除了这1个随机元素外,所有输出看起来都很好。正如您在下面的图像中所看到的,除了突出显示的1之外,所有的值标记看起来都很好

用于生成XML的代码:

private void generateXML() {
    try {
        DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

        doc = docBuilder.newDocument();

        //Add Root Element
        Element rootElement = doc.createElement("Request");
        rootElement.setAttribute("request_id", requestID);
        doc.appendChild(rootElement);

        //Add Experiment Element
        Element experimentElement = doc.createElement("Experiment");
        experimentElement.setAttribute("name", mappedData.getFileName()); //Change to experiment name
        experimentElement.setAttribute("insert_method", "Insert");
        experimentElement.setAttribute("notebook", "BioELN");
        experimentElement.setAttribute("researcher", webFormPostData.get("Researchers")[0]);
        experimentElement.setAttribute("project", getExcelTypeData.get("project"));
        experimentElement.setAttribute("comments", webFormPostData.get("comments")[0]);
        experimentElement.setAttribute("expt_date", getCurrentDate());
        experimentElement.setAttribute("protocol_name", getExcelTypeData.get("protocolName"));
        experimentElement.setAttribute("protocol_version", getExcelTypeData.get("protocolVersion"));
        rootElement.appendChild(experimentElement);

        //Add Data to Experiment
        List<Element> experimentDataElements = generateExperimentDataElements();
        for(Element dataElement : experimentDataElements) {
            experimentElement.appendChild(dataElement);
        }

        Element attachmentElement = doc.createElement("Attachment");
        attachmentElement.setAttribute("filename", mappedData.getFilePath());

        experimentElement.appendChild(attachmentElement);
    } catch(Exception e) {
        logger.log("Error: " + e);
        e.printStackTrace();
    }
}
private List<Element> generateExperimentDataElements() {
    //Loop through output_mapping mapped data and see if values are found in the mappedData.getMappedData();        
    List<Element> dataElements = new ArrayList<Element>();

    for(int i=0; i < mappedData.getMappedData().size(); i++) { //Cycle Through all Mapped Data Rows
        for(Map.Entry<String, Map<String, String>> entry : outputMappedFields.entrySet()) { //Get Required Fields
            Element itemElement, valueElement, dataElement;

            String mappedVarName = entry.getKey();
            String vName = entry.getValue().get("variableName");
            String variableType = entry.getValue().get("variableType");

            itemElement = doc.createElement("VGItem");
            itemElement.setAttribute("row_id", String.valueOf(i+1));
            itemElement.setAttribute("table_name", "Results");
            itemElement.setAttribute("variable_name", vName);
            itemElement.setAttribute("parent_table_name", "Plate");
            itemElement.setAttribute("parent_row_id", "plate");

            valueElement = doc.createElement("Value");
            dataElement = doc.createElement(variableType+"_value");
            if(mappedData.getMappedData().get(i).containsKey(mappedVarName)) {
                dataElement.setTextContent(mappedData.getMappedData().get(i).get(mappedVarName)); //Get field from Mapped Data
            }

            valueElement.appendChild(dataElement);
            itemElement.appendChild(valueElement);
            dataElements.add(itemElement);
        }
    }

    return dataElements;
}
@Override
public String toString() {
    try {
        TransformerFactory tf = TransformerFactory.newInstance();
        Transformer transformer = tf.newTransformer();
        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        StringWriter writer = new StringWriter();
        transformer.transform(new DOMSource(doc), new StreamResult(writer));
        String output = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + writer.getBuffer().toString().replaceAll("\n|\r", "");

        return output;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return "";
}

XML文件:

在图像中无法搜索文本。批号是否显示在输出的其他地方?这就是我开始调试的地方。我已经添加了一个指向该文件的链接。但在我运行代码的10多次中,这只是随机发生的一件事。@Steven10172:你确定你没有意外删除我确定的内容,因为这是Chrome中页面的一个视图源,你不能删除它。不,我不能具体地再现这个错误。它只是碰巧注意到文件验证失败。