【发布时间】:2017-06-30 07:56:14
【问题描述】:
我有一个 xm 文件,我已经使用 XSLT transformation 将其与 DOM 进行了解析,并将数据存储到 csv 中。
但现在我想在 SAX 中执行此操作,因为 xml 文件非常大。
现在我的问题是我们可以使用 xslt 转换和SAX parser 并将数据存储到 csv 中吗?
我到处搜索,但没有得到任何有用的信息。
这是我用 DOM 编写的 java 代码
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.w3c.dom.Document;
class Xml2Csv {
public static void main(String args[]) throws Exception {
// Setting path for .xsl file
File stylesheet = new File("style.xsl");
// Setting path for Eurex xml feed file
File xmlSource = new File("eurex_ref_data.xml");
//Dom initialization and parse xml
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(xmlSource);
// Transformation of parsed xml to csv
StreamSource stylesource = new StreamSource(stylesheet);
Transformer transformer = TransformerFactory.newInstance().newTransformer(stylesource);
Source source = new DOMSource(document);
//System.out.println(source.toString());
System.out.println("Generating CSV File");
Result outputTarget = new StreamResult(new File("AID.csv"));
transformer.transform(source, outputTarget);
System.out.println("File has been generated");
}
}
这是我的示例 XSLT 代码..
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" >
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:text>PriSetPx,TxnTm,ID,AltID,AltIDSrc</xsl:text>
<xsl:text>
</xsl:text>
<xsl:for-each select="FIXML/Batch/SecDef">
<xsl:variable name="secDef" select="concat(@PriSetPx,',',@TxnTm)" />
<xsl:for-each select="Instrmt/AID">
<xsl:value-of select="concat($secDef, ',',../@ID,',',@AltID,',',@AltIDSrc,'
')"/>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
提前致谢!
【问题讨论】:
标签: java xml csv xslt saxparser