【问题标题】:Converting text file to xml using xslt使用 xslt 将文本文件转换为 xml
【发布时间】:2021-07-12 04:50:03
【问题描述】:

输入.txt:


a|b|c|d|e|f|g
A|B|C|D|E|F|G

第一行是标签,第二行是值。如何使用 'xslt' 和 apache camel 将其转换为 xml。

输出.xml:


<products>
    <product>
        <a>A</a>
        <b>B</b>
        <c>C</c>
        <d>D</d>
        <e>E</e>
        <f>F</f>
        <g>G</g>
    <product>
<products>

【问题讨论】:

    标签: xml xslt text apache-camel xslt-2.0


    【解决方案1】:

    如果您的处理器支持 XSLT 2.0,并且您为它提供了一个虚拟 XML 文档,那么您可以执行以下操作:

    XSLT 2.0

    <xsl:stylesheet version="2.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    
    <!-- path to text file -->
    <xsl:param name="textfile">input.txt</xsl:param>
    
    <xsl:template match="/"> 
        <xsl:variable name="lines" select="tokenize(unparsed-text($textfile), '&#10;')" />
        <xsl:variable name="names" select="tokenize($lines[1], '\|')" />
        <xsl:variable name="values" select="tokenize($lines[2], '\|')" />
        <products>
            <product>
                <xsl:for-each select="$names">
                    <xsl:variable name="i" select="position()" />
                    <xsl:element name="{.}">
                        <xsl:value-of select="$values[$i]"/>
                    </xsl:element>
                </xsl:for-each>
            </product>
        </products>
    </xsl:template>
    
    </xsl:stylesheet>
    

    请注意,如果顶行中的任何一个标记不是有效的 XML 元素名称,这将失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 2014-11-15
      • 1970-01-01
      相关资源
      最近更新 更多