【发布时间】:2017-07-13 07:16:40
【问题描述】:
我可以使用 XSLT 从 XML 文件生成 CSV 文件,但是 XML 文件头的唯一标题只显示在 CSV 文件上。值未显示。
这是我的 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;
public class xml2csv {
public static void main() throws Exception {
File stylesheet = new File("C:/Users/Admin/Desktop/out.xslt");
File xmlSource = new File("C:/Users/Admin/Desktop/out.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/Admin/Desktop/out.csv"));
transformer.transform(source, outputTarget);
}
}
XML 文件:-
<root>
<header>Symbol</header>
<row>NIFTY 50</row>
<row>LUPIN</row>
<header>Open</header>
<row>9,670.35</row>
<row>1,082.90</row>
<header>High</header>
<row>9,684.25</row>
<row>1,137.00</row>
</root>
XSLT 文件:-
<?xml version="1.0"?>
<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" omit-xml-declaration="yes" indent="no"/>
<xsl:template match="/">
Symbol,Open,High
<xsl:for-each select="//header">
<xsl:value-of select="concat(Symbol, ',', Open, ',', High)"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
所以,我使用这个 XSLT 只获得了 XML 的标头,我哪里出错了?
【问题讨论】:
-
我认为您应该先重新格式化您的 XML,然后再根据该更新您的 XSLT 文件。
-
请编辑您的问题并添加预期的输出。 -- 您的尝试失败的原因是
<xsl:value-of select="concat(Symbol,',',Open,',',High)"/>没有选择任何内容,因为您的XML 没有任何名为Symbol或Open或High的元素。 -
P.S.您可以控制 XML 的结构吗?如果我猜对了它所代表的内容,那么它的构造非常糟糕,需要大量工作才能从中获得预期的 CSV。