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

Unix: Swapping Values Between XML Tags In a File

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

From:

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

to:

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

如果您不想使用 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 样式表使用 "identity transform"(第一个模板一对一复制所有内容)并为 Parent 元素添加特殊规则。如果你的 XML 只包含上面的简单结构,你可以省略第一个 xsl:template.