0

次のようなタグが散らばっているいくつかのxmlファイルがあります。

<?xm-insertion_mark_start author="some_author" time="20050602T125956-0500"?>  

そのような挿入物を取り除くにはどうすればよいですか? 私はこれを利用しようとしました:

sed -e 's/<\?xm.*?\?>//g' in.xml > out.xml
4

2 に答える 2

1

sed には、気が進まない (「貪欲ではない」) 量指定子がありません。これを試して:

sed '/<?xm\([^?][^>]\)\+?>/d' in.xml > out.xml

編集: もちろん、XSLT を使用して XML から処理命令 (PI) を安全に削除することもできます。

これにより、指定されたすべての PIxm-insertion_mark_startが削除されますが、残りの XML はすべてそのまま残ります。

<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="processing-instruction('xm-insertion_mark_start')" />
</xsl:stylesheet>

使用する

<xsl:template match="processing-instruction()" />

名前に関係なく、すべてのPIを削除する場合。

を使用xsltproc(1)して、コマンド ラインで XML に変換を適用できます。

于 2013-07-31T18:34:57.343 に答える