Unix:在文件中交换XML标记之间的值

问题描述 投票:1回答:1

使用Unix命令行如何执行以下操作?我在Solaris 10 OS上

From:

<Parent>
 <From>abc</From>
 <To>xyz</To>
</Parent>

to:

<Parent>
 <From>xyz</From>
 <To>abc</To>
</Parent>
xml unix tags swap
1个回答
0
投票

如果您不想使用awk或sed,则可以使用xsltproc,它应该在Solaris上可用(该包称为libxslt):

transform.xsl:

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

    <xsl:output indent="yes"/>

    <xsl:template match="node() | @*">
        <xsl:copy>
            <xsl:apply-templates select="node() | @*"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="Parent">
        <xsl:copy>
            <xsl:copy-of select="To"/>
            <xsl:copy-of select="From"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

命令行:

xsltproc transform.xsl myfile.xml

上面的XSLT样式表使用“标识转换”(第一个模板一对一地复制所有内容),并为Parent元素添加一个特殊规则。如果您的XML仅包含上面的简单结构,则可以省略第一个xsl:template。

© www.soinside.com 2019 - 2024. All rights reserved.