在java中不使用XSLT将XML转换为CSV

在java中不使用XSLT将XML转换为CSV,java,xml,xslt,csv,Java,Xml,Xslt,Csv,第一次使用堆栈溢出,我现在是一名学生,正在做一个用于分析的项目,但公司将所有记录存储到XML中,我必须将其转换并制作一个程序,以便通过电子邮件自动发送报告 我使用java来做XML解析器,现在我正在尝试Apache common digester,因为其他解析器需要XSLT来做这件事,但我想要一个不依赖XSLT的程序,因为该公司需要一个系统,并像每5分钟一次的摘要一样发送一份报告。因此,正如我在这里看到的一些答案一样,使用XSLT可能相当慢。所以,我想知道如何使用digester或其他方法进行转

第一次使用堆栈溢出,我现在是一名学生,正在做一个用于分析的项目,但公司将所有记录存储到XML中,我必须将其转换并制作一个程序,以便通过电子邮件自动发送报告

我使用java来做XML解析器,现在我正在尝试Apache common digester,因为其他解析器需要XSLT来做这件事,但我想要一个不依赖XSLT的程序,因为该公司需要一个系统,并像每5分钟一次的摘要一样发送一份报告。因此,正如我在这里看到的一些答案一样,使用XSLT可能相当慢。所以,我想知道如何使用digester或其他方法进行转换,如果可能的话,尝试展示一些代码示例,以进行转换

以下是我在digester下构建的示例代码:

public void run() throws IOException, SAXException {    
    Digester digester = new Digester();
    // This method pushes this (SampleDigester) class to the Digesters
    // object stack making its methods available to processing rules.
    digester.push(this);
    // This set of rules calls the addDataSource method and passes
    // in five parameters to the method.
    digester.addCallMethod("datasources/datasource", "addDataSource", 5);
    digester.addCallParam("datasources/datasource/name", 0);
    digester.addCallParam("datasources/datasource/driver", 1);
    digester.addCallParam("datasources/datasource/url", 2);
    digester.addCallParam("datasources/datasource/username", 3);
    digester.addCallParam("datasources/datasource/password", 4);


    File file = new File("C:\\Users\\1206432E\\Desktop\\datasource.xml");
    // This method starts the parsing of the document.
    //digester.parse("file:\\Users\\1206432E\\Desktop\\datasource.xml");
    digester.parse(file);


  }
另一个是使用DOM将CSV转换为XML,但仍然依赖于一个XSLT文件:


试试OpenCsv——所以使用XSLT可能会很慢——有证据支持吗?您实际测量过吗?还没有,但根据stack overflow中的一些评论,性能会下降,公司需要一个程序来帮助他们发送报告,比如说5分钟,因此使用XML的频率会增加。如果使用XSLT,性能将是一个问题,并且可能是下一次公司想要在其中添加更多变量时的问题,因此,如果可能的话,他们继续编辑它会很麻烦,尝试自动化它。如果你想看到链接在这里:可能重复的
public static void main(String args[]) throws Exception {
    File stylesheet = new File("C:\\Users\\1206432E\\Desktop\\Style.xsl");
    File xmlSource = new File("C:\\Users\\1206432E\\Desktop\\data.xml");

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document document = builder.parse(xmlSource);

    StreamSource stylesource = new StreamSource(stylesheet);
    Transformer transformer = TransformerFactory.newInstance()
                    .newTransformer(stylesource);
    Source source = new DOMSource(document);
    Result outputTarget = new StreamResult(
                    new File("C:\\Users\\1206432E\\Desktop\\temp.csv"));
    transformer.transform(source, outputTarget);
}