xml数据提取,需要提取最后10个字母

时间:2017-08-22 10:02:20

标签: xml

我使用xml进行自动化proj,我有以下xml doc

<output>
    <line index="1">Copyright 2010 BMC Software Ltd, Version: 1.6.2  </line>
    <line index="2">Connecting to remote service...</line>
    <line index="3">Connected to remote host.</line>
    <line index="4">SERVICE_NAME: sqlagent$sqlinst </line>
    <line index="5">TYPE: 10 WIN32_OWN_PROCESS  </line>
    <line index="6">STATE: 4 RUNNING </line>
    <line index="7">(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)</line>
    <line index="8">WIN32_EXIT_CODE: 0  (0x0)</line>
    <line index="9">SERVICE_EXIT_CODE: 0  (0x0)</line>
    <line index="10">CHECKPOINT: 0x0</line>
    <line index="11">WAIT_HINT: 0x0</line>
    <line index="12">Remote application exited with code: 0 </line>
</output>

我需要将行索引6的输出作为运行或停止状态,所以我使用了以下xml sylesheet

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:template match="/">
  <xsl:variable name="vlength">
   <xsl:copy-of select="/output/line[@index=6]"/>
  </xsl:variable>
  <xsl:value-of select="string-length($vlength)"/>
 </xsl:template>

<xsl:template match="/">                   
<dayOfMonth>
        <xsl:value-of select="substring(/output/line[@index=6],0,40)"/>
</dayOfMonth>

</xsl:template>    
</xsl:stylesheet>

但不知怎的,我没有得到理想的结果,你能帮帮我吗? 以下是快照

enter image description here

所以我需要输出运行或停止 它的最后9个字母

2 个答案:

答案 0 :(得分:1)

使用以下内容:substring('string',9) - 从第9个索引开始,它将打印字符串的其余部分。

 <xsl:value-of select="substring(output/line[6],9)"/>

enter image description here

答案 1 :(得分:1)

请尝试使用以下XSLT获取字符串最后9个字符的值。

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:variable name="status" select="output/line[@index = 6]" />
    <xsl:variable name="stringLength" select="string-length($status)" />
    <xsl:template match="/">
        <status>
            <xsl:value-of select="normalize-space(substring($status, $stringLength - 9, $stringLength))" />
        </status>
    </xsl:template>
</xsl:stylesheet>

这提供了所需的输出,如下所示

<status>RUNNING</status>