当前位置:  开发笔记 > 编程语言 > 正文

使用XSLT将XML转换为CSV

如何解决《使用XSLT将XML转换为CSV》经验,为你挑选了3个好方法。

我有以下XML文档:


  
   Shockwave 
   Ruby 
   Brian May 
   New 
   31/10/2008 0:00:00 
  
  
   Other 
   Erlang 
   Takashi Miike 
    Canceled  
   07/11/2008 0:00:00 
  
...

我想从转换(XSLT)结果中得到这个结果:

Shockwave,Ruby,Brian May,New,31/10/2008 0:00:00
Other,Erlang,Takashi Miike,Cancelled,07/11/2008 0:00:00

有谁知道XSLT实现这一目标?我正在使用.net以防万一.



1> Tomalak..:

这是一个可配置参数的版本,您可以通过编程方式设置:


  

  
  
  

  
    
  

  
    
    
      
    
  

  
     
    
    
      
    
  

  



2> schnaader..:

在这里找到一个XML转换样式表(站点本身是德语)

这里添加的样式表可能会有所帮助:








"",    
""





您可能希望删除xsl:if标记内的引号,以便它不会将您的值放入引号,具体取决于您要使用CSV文件的位置.


请注意,如果原始数据中有逗号,则不会对其进行转义.您可能希望使用contains()和带translate()的转义添加测试.
我认为这不会处理数据中的双引号。要转义双引号,必须用两个双引号代替它。
在unix上更正新行是` `(\n).` `是十六进制\ r

3> ioquatix..:

xsl:stylesheet可以使用指定的列标题列表,并确保正确排序行.



    
    

    

    
        name
        sublease
        addressBookID
        boundAmount
        rentalAmount
        rentalPeriod
        rentalBillingCycle
        tenureIncome
        tenureBalance
        totalIncome
        balance
        available
    

    
        
        
                
                
                    
                
        
        


        
        
    

    
        

        
        
            
            
            

            
            
                
                    
                    
                
                
                    
                
                
                    
                
            

            
            
                
            
        

        
        

    



这很好,但是不行.`replace()`是一个XPath 2.0函数.在XSLT 1.0中,您必须使用递归字符串替换模板.
根本没有使用xsl,并决定使用SAX
推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有