XSLT解析JSON字符串

         这两天呗XSL类问题搞的焦头烂额,不过总是解决了问题。

给定一个JSON串怎么进行对其解析呢?串如下:

<Logic>[{"TriggerVal":"10001510","TargetItemNo":"1879","targetCRFNo":null,"targetPageNo":null,"TargetItemDivId":null,"FromCRFNo":null},{"TriggerVal":"10001510","TargetItemNo":"1880","targetCRFNo":null,"targetPageNo":null,"TargetItemDivId":null,"FromCRFNo":null},{"TriggerVal":"10001510","TargetItemNo":"1881","targetCRFNo":null,"targetPageNo":null,"TargetItemDivId":null,"FromCRFNo":null}]</Logic>

        我的目的是将TriggerVal和TargetItemNo的值取出来,进行处理。根据以上串的形式我们可以发现,先按找{,然后

再找‘“’与’:‘当我们想要得到TargetItemNo的值,再找到','即可。至于怎么用XSLT找,主要是使用substring-before和substring-after两个函数进行切割,并且递归的调用模板函数(Choice),我们直接上代码,很简单。

	<xsl:template name="Choice" xml:space="preserve">
		
		<xsl:param name="logic"/>
		<xsl:param name="node"/>
		<xsl:variable name="StatusBRACE" select="substring-after($logic,'{')"/>
		<xsl:variable name="StatusQUOBefore" select="substring-after($StatusBRACE,'"')"/>
		<xsl:variable name="StatusQUOAfter" select="substring-before($StatusQUOBefore,'"')"/>
		<xsl:variable name="StatusCOLON" select="substring-after($StatusQUOBefore,':')"/>
		<xsl:variable name="StatusQUOBefore2" select="substring-after($StatusCOLON,'"')"/>
		<xsl:variable name="StatusQUOAfter2" select="substring-before($StatusQUOBefore2,'"')"/>
		
		
		<xsl:variable name="TargetBRACE" select="substring-after($StatusQUOBefore2,',')"/>
		<xsl:variable name="TargetQUOBefore" select="substring-after($TargetBRACE,'"')"/>
		<xsl:variable name="TargetQUOAfter" select="substring-before($TargetQUOBefore,'"')"/>
		
		<xsl:variable name="TargetCOLON" select="substring-after($TargetQUOBefore,':')"/>
		<xsl:variable name="TargetQUOBefore2" select="substring-after($TargetCOLON,'"')"/>
		<xsl:variable name="TargetQUOAfter2" select="substring-before($TargetQUOBefore2,'"')"/>
		

<xsl:if test="substring-after($TargetQUOBefore2, '{') != ''">
      <xsl:call-template name="Choice">
      	<xsl:with-param name="logic" select="$TargetQUOBefore2" />
      </xsl:call-template>
    </xsl:if>
	</xsl:template>

       至于中间怎么对数据处理,这里我就不再叙述了


猜你喜欢

转载自blog.csdn.net/grit_icpc/article/details/74449662