1
XMLをCSVに転送するコードはありますが、出力(csv)では最初の行が空です(空)。転送中の空行xslを使用したXMLからCSVへ
どうしたらいいのですか教えてください。
Javaクラス:
public class ReadXML {
public static void main(String[] args) throws TransformerException, SAXException, IOException, ParserConfigurationException {
File stylesheet = new File("C:\\style.xsl");
File xmlSource = new File("C:\\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:\\x.csv"));
transformer.transform(source, outputTarget);
}
}
XSLスタイルシート:(style.xsl)
<?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="/">
MsgId,PartnerId,OrderId
<xsl:for-each select="//orderDetails">
<xsl:value-of select="concat(MsgId,',',PartnerId,',',OrderId,'
')"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
XMLデータ:(data.xmlに)
<?xml version="1.0" encoding="UTF-8"?>
<orders>
<orderDetails>
<MsgId>text1</MsgId>
<PartnerId>text1</PartnerId>
<OrderId>text1</OrderId>
</orderDetails>
<orderDetails>
<MsgId>text11</MsgId>
<PartnerId>text11</PartnerId>
<OrderId>text11</OrderId>
</orderDetails>
</orders>
にヘッダーを挿入していただきありがとうございました。 :> – 4est