这两天呗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>
至于中间怎么对数据处理,这里我就不再叙述了