首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >csv文件由app获取,但不返回

csv文件由app获取,但不返回
EN

Stack Overflow用户
提问于 2014-01-24 09:57:15
回答 1查看 145关注 0票数 0

我有一个实习,现在正在训练。我在mule中有以下代码,这只是java end。我想这就是问题所在。

如前所述,csv文件是从它所在的文件夹中提取的,但是它没有到达输出文件夹。任何建议或建议欢迎(如果工作了将近15个小时)。

代码语言:javascript
复制
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;

 }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-26 00:03:07

因为你没有提供足够的信息来帮助你,所以我会给你一些随机的一般性建议:)

既然你在Mule,有些事情你应该让Mule去做,而不是自己编写代码。例如,应该删除执行DOM到XML转换的方法的所有结尾,并在组件之后添加一个<mulexml:dom-to-xml-transformer />来替换它。

而且,我认为usermap.xml在您的项目中。如果是这样的话,为什么每次都装呢?您可以在CsvConverter()中预加载一次。不要像那样硬编码文件路径,应用程序在Mule中部署时永远不会工作。相反,将usermap.xml放在src/main/resources中,并使用Thread.currentThread().getContextClassloader().getResourceAsStream("usermap.xml")作为类路径资源加载它。

PS。为什么所有的静态变量都在顶部?如果它们是固定不变的,那么它们也是最终的。并将它们命名为THE_JAVA_WAY (常量)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21329570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档