Ich bin in der Lage, CSV-Datei aus XML-Datei mit XSLT zu generieren, aber der einzige Header der XML-Datei-Header wird nur auf CSV-Datei angezeigt. Die Werte werden nicht angezeigt.Werte leer in CSV-Datei
Hier ist mein Java-Code: -
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);
}
}
die XML-Datei: -
<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-Datei: -
<?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>
So, Ich bekomme nur Header von XML mit dieser XSLT, wo liege ich falsch?
Ich denke, Sie sollten zuerst Ihre XML formatieren und dann entsprechend Ihre XSLT-Datei aktualisieren. –
Bitte bearbeiten Sie Ihre Frage und fügen Sie die erwartete Ausgabe hinzu. - Der Grund, warum Ihr Versuch fehlschlägt, ist, dass ' ' nichts auswählt, weil Ihr XML das nicht tut habe irgendwelche Elemente mit dem Namen 'Symbol' oder' Offen 'oder' Hoch'. –
P.S. Haben Sie die Kontrolle über die Struktur Ihres XML? Wenn ich richtig einschätze, was es darstellt, ist es sehr schlecht konstruiert und es wird viel Arbeit brauchen, um die erwartete CSV daraus zu machen. –