使用XSLT从XML生成Json文件

时间:2014-07-09 09:15:16

标签: xml json xslt

我使用xslt将xml转换为json。我需要在转换完成后生成一个json输出文件。有没有办法做到这一点。它会更有用。

我尝试过以下文件。

这是我使用的xml文件,并使用xslt样式表

解析为json

sam.xml

<!--?xml version="1.0" encoding="UTF-8"?-->
<Customers>
<Customer Id="99">
    <Name>Bob</Name>
    <Age>39</Age>
    <Address>
        <Street>10 Idle Lane</Street>
        <City>Yucksville</City>
        <PostalCode>xxxyyy</PostalCode>
    </Address>
</Customer>
<Customer Id="101">
    <Name>Bill</Name>
    <Age>39</Age>
    <Address>
        <Street>10 Idle Lane</Street>
        <City>Yucksville</City>
        <PostalCode>xxxyyy</PostalCode>
    </Address>
</Customer>

</Customers>

sam.xsl(用于解析xml的xslt表)

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text"/>  
     <xsl:template match="/">{
        <xsl:apply-templates select="*"/>}
    </xsl:template>  
    <!-- Object or Element Property-->
    <xsl:template match="*">
        "<xsl:value-of select="name()"/>" : <xsl:call-template name="Properties"/>
    </xsl:template>
    <!-- Array Element -->
    <xsl:template match="*" mode="ArrayElement">
        <xsl:call-template name="Properties"/>
    </xsl:template>

    <!-- Object Properties -->
    <xsl:template name="Properties">
        <xsl:variable name="childName" select="name(*[1])"/>
        <xsl:choose>
            <xsl:when test="not(*|@*)">"<xsl:value-of select="."/>"</xsl:when>
            <xsl:when test="count(*[name()=$childName]) > 1">{ "<xsl:value-of select="$childName"/>" :[<xsl:apply-templates select="*" mode="ArrayElement"/>] }</xsl:when>
            <xsl:otherwise>{
                <xsl:apply-templates select="@*"/>
                <xsl:apply-templates select="*"/>
    }</xsl:otherwise>
        </xsl:choose>
        <xsl:if test="following-sibling::*">,</xsl:if>
    </xsl:template>

    <!-- Attribute Property -->
    <xsl:template match="@*">"<xsl:value-of select="name()"/>" : "<xsl:value-of select="."/>",
    </xsl:template>
</xsl:stylesheet>

index.html(open将在div标签中显示json输出)

    <html>
    <head>
    <title></title>
    <script type="text/javascript" src="./resources/js/jquery-1.2.3.min.js"></script>
    <script type="text/javascript" src="./resources/js/jquery.xslt.js"></script>
    <script type="text/javascript">
    $(function() {
     $('#transformResult').xslt("sam.xml","./resources/xsl/SampleXsl.xsl");    
    }); 
    </script>
    </head>
    <body>
    <div id="transformResult"></div>
    </body>
    </html>

Index.html仅用于测试json输出。我使用了jquery插件os xslt。

我想要一个json文件。我得到了div标签的输出。但我需要用输出生成json文件。请帮忙

0 个答案:

没有答案