使用shell xmlstarlet从xml文件中删除最后一个逗号



我找到了包含

comp.xml文件
<project name="installer" >
<property name="workflow.list" >
 BTCH.WF_BatchRequest_Process.BatchRating,
 BTCH.WF_BatchRequest_Process.Invoice,
</property>
<property name="wfGroup.list" >
BTCH.WFG_BatchResPrep,
BTCH.WFG_BatchRes,
</property>
<target name="shutdown">
<echo>shutdown</echo>    
</target>  
</project>

我需要删除最后的','逗号在每个<property>标签使用shell,如果该逗号存在所以应该是:

<project name="installer" >
<property name="workflow.list" >
BTCH.WF_BatchRequest_Process.BatchRating,
BTCH.WF_BatchRequest_Process.Invoice
</property>
<property name="wfGroup.list" >
BTCH.WFG_BatchResPrep,
BTCH.WFG_BatchRes
</property>
<target name="shutdown">
<echo>shutdown</echo>    
</target>  
</project>

如果您知道属性值将始终以<comma><newline>结束,那么以下xslt适用于我(至少在您的示例数据上)。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="property">
        <xsl:copy>
            <xsl:value-of select="substring(text(), 1, string-length(text()) - 2)"/><xsl:text>
</xsl:text>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

上面大部分都是简单的恒等变换。其余部分只是匹配property元素和少量的文本操作。

相关内容

  • 没有找到相关文章

最新更新