Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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 csv文件由应用程序获取,但不';我不能回来_Java_Xml_Csv_Mule - Fatal编程技术网

Java csv文件由应用程序获取,但不';我不能回来

Java csv文件由应用程序获取,但不';我不能回来,java,xml,csv,mule,Java,Xml,Csv,Mule,我有一份实习工作,现在正在接受培训。我在mule studio中有以下代码,这只是java端。我想这就是问题所在 如上所述,csv文件是从它所在的文件夹中获取的,但它不会到达输出文件夹。欢迎提供任何建议或提示(如果您已经为此工作了近15个小时。) package com.csvToXml.common; 导入net.sf.flatpack.DefaultDataSet; 导入net.sf.flatpack.DefaultParserFactory; 导入net.sf.flatpack.Parse

我有一份实习工作,现在正在接受培训。我在mule studio中有以下代码,这只是java端。我想这就是问题所在

如上所述,csv文件是从它所在的文件夹中获取的,但它不会到达输出文件夹。欢迎提供任何建议或提示(如果您已经为此工作了近15个小时。)

package com.csvToXml.common;
导入net.sf.flatpack.DefaultDataSet;
导入net.sf.flatpack.DefaultParserFactory;
导入net.sf.flatpack.Parser;
导入java.io.FileNotFoundException;
导入java.io.FileReader;
导入java.io.StringReader;
导入java.io.StringWriter;
导入javax.xml.parsers.DocumentBuilder;
导入javax.xml.parsers.DocumentBuilderFactory;
导入javax.xml.parsers.parserConfiguration异常;
导入javax.xml.transform.Transformer;
导入javax.xml.transform.TransformerConfiguration异常;
导入javax.xml.transform.TransformerException;
导入javax.xml.transform.TransformerFactory;
导入javax.xml.transform.dom.DOMSource;
导入javax.xml.transform.stream.StreamResult;
导入java.io.BufferedReader;
导入org.w3c.dom.Document;
导入org.w3c.dom.Element;
公共类CSV转换器{
公共静态整数行;
公共静态int rowNumber=0;
公共静态int columnNumber=0;
专用静态字符分隔符=',';
私有静态字符限定符=“”;
私有静态布尔ignoreFirstRecord=true;
公共CSV转换器(){
}
公共字符串转换(字符串csv){
StringReader sr=新的StringReader(csv);
FileReader fr=null;
//获取用于csv处理的配置文件
试一试{
fr=newfilereader(“/users/jacqueslecoq/MuleStudio/workspace/stock/flows/usermap.xml”);
}catch(filenotfound异常){
e、 printStackTrace();
}
//csv解析器
Parser p=DefaultParserFactory.getInstance().newDelimitedParser(fr、sr、分隔符、限定符、ignoreFirstRecord);
DefaultDataSet d=(DefaultDataSet)p.parse();
//构建xml
DocumentBuilderFactory dFact=DocumentBuilderFactory.newInstance();
文档生成器构建;
单据单据=空;
试一试{
build=dFact.newDocumentBuilder();
doc=build.newDocument();
}捕获(ParserConfiguration异常e){
e、 printStackTrace();
}
元素根=doc.createElement(“根”);
doc.appendChild(根);
元素详细信息=doc.createElement(“行”);
root.appendChild(详细信息);
while(d.next()){
字符串[]columns=d.getColumns();

对于(int i=0;i因为您没有提供足够的信息来帮助您,所以我将给您随机的一般建议:)

因为您在Mule中,所以有些事情应该让Mule来做,而不是自己编码。例如,执行DOM到XML转换的方法的所有结尾都应该删除,并替换为在组件后面添加的

另外,我想象
usermap.xml
,因为它在您的项目中。如果是这样,为什么每次都要加载它?您可以在
CsvConverter()中预加载一次
。不要像这样硬编码文件路径,应用程序在Mule中部署时永远不会工作。相反,将
usermap.xml
放入
src/main/resources
中,并将其作为类路径资源加载到
Thread.currentThread().getContextClassloader().getResourceAsStream(“usermap.xml”)


注:所有的静态变量在顶部是什么?如果它们是常量,那么也将它们作为最终变量。并将它们命名为常量的
the_JAVA\u WAY

是否有任何例外?请提供示例csv的外观和数据。您的配置在哪里?
package com.csvToXml.common;

import net.sf.flatpack.DefaultDataSet;
import net.sf.flatpack.DefaultParserFactory;
import net.sf.flatpack.Parser;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.BufferedReader;

import org.w3c.dom.Document;
import org.w3c.dom.Element;




public class CsvConverter {


  public static int numberOfRows;
    public static int rowNumber = 0;
    public static int columnNumber = 0;


 private static char delimiter = ',';
 private static char qualifier = '"';
 private static boolean ignoreFirstRecord = true;

 public CsvConverter() {

 }

 public String convert(String csv)  {
  StringReader sr = new StringReader(csv);
  FileReader fr = null;

  //Get the configuration file for csv processing
  try {
   fr = new       FileReader("/users/jacqueslecoq/MuleStudio/workspace/stock/flows/usermap.xml");
  } catch (FileNotFoundException e) {   
   e.printStackTrace();
  }

  //The csv parser
  Parser p = DefaultParserFactory.getInstance().newDelimitedParser(fr, sr,delimiter,   qualifier, ignoreFirstRecord);

  DefaultDataSet d = (DefaultDataSet) p.parse();

  //Build the xml
  DocumentBuilderFactory dFact = DocumentBuilderFactory.newInstance();
        DocumentBuilder build;
        Document doc=null;
  try {
   build = dFact.newDocumentBuilder();

        doc = build.newDocument();
  } catch (ParserConfigurationException e) {

   e.printStackTrace();
  }
        Element root = doc.createElement("root");
         doc.appendChild(root);

        Element Details = doc.createElement("rows");
        root.appendChild(Details);


  while (d.next()) {

    String[] colums = d.getColumns();
    for(int i=0; i<colums.length;i++ ){
     Element name = doc.createElement(colums[i]);
              name.appendChild(doc.createTextNode(d.getString(colums[i])));
              Details.appendChild(name);
    }

  }
  TransformerFactory tf = TransformerFactory.newInstance();
  Transformer transformer=null;
  StringWriter writer = null;

  try {
   transformer = tf.newTransformer();
   writer = new StringWriter();
   transformer.transform(new DOMSource(doc), new StreamResult(writer));
  } catch (TransformerConfigurationException e) {

   e.printStackTrace();
  } catch (TransformerException e) {

   e.printStackTrace();
  }


  String output = writer.getBuffer().toString();

  return output;

 }