将Text文件中的数据转换为JSON或XML

时间:2017-08-23 07:45:31

标签: json xml xslt transformation

我是JSON的新手,对XML知之甚少。我有一个关于从文本到XML或JSON的数据转换的问题。我已经使用过XSL Transformations,我将XML文档转换为XML或文本。但现在,我想做其他方式,即text -> JSON/XML

例如,我有以下文字:

One(A,B)    One(A',B)
Two(C,D)    Two(C',D)
Three(E,F)  Three(E',F)
Four(G,H) 
Five(I,J)

因此相应的XML输出可能如下所示:

    <B> A,A' </B>
    <D> C,C' </D>
    <F> E,E' </F>
    <H> G </H>
    <J> I </J>

我希望问题很清楚,如果不是,请告诉我。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

以下是可与XSLT 3.0或Altova XMLSpy / Raptor一起使用的Saxon 9.8样式表:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:math="http://www.w3.org/2005/xpath-functions/math"
    xmlns:fn="http://www.w3.org/2005/xpath-functions"
    exclude-result-prefixes="xs math fn"
    version="3.0">

    <xsl:param name="input-uri" as="xs:string" select="'input1.txt'"/>

    <xsl:output indent="yes"/>

    <xsl:template name="xsl:initial-template">
        <xsl:apply-templates select="unparsed-text-lines($input-uri)"/>
    </xsl:template>

    <xsl:template match=".[. instance of xs:string]">
        <xsl:for-each-group select="analyze-string(., '\w+\(([^,]*),(\w+)\)')//fn:match" group-by="fn:group[@nr = 2]">
            <xsl:element name="{current-grouping-key()}">
                <xsl:value-of select="current-group()/fn:group[@nr = 1]" separator=","/>
            </xsl:element>
        </xsl:for-each-group>
    </xsl:template>

</xsl:stylesheet>