2016-12-08 3 views
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,'&#xA;')"/> 
</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> 

答えて

3

要素xsl:text:

<xsl:text>MsgId,PartnerId,OrderId 
</xsl:text> 
+0

にヘッダーを挿入していただきありがとうございました。 :> – 4est

関連する問題