Используйте Принять заголовок, если обеспечено, URI как обработка отказа.
Запустите ваш XML с помощью преобразования идентичности XSLT с пустым шаблоном для комментариев.
Все содержимое XML, за исключением комментариев, будет передано в вывод.
Чтобы отформатировать вывод по племени, установите output @ indent = "yes":
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<!--Match on Attributes, Elements, text nodes, and Processing Instructions-->
<xsl:template match="@*| * | text() | processing-instruction()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!--Empty template prevents comments from being copied into the output -->
<xsl:template match="comment()"/>
</xsl:stylesheet>
Вы можете посмотреть на инструмент xmllint
. У него есть несколько опций (один из которых - формат
сделает красивую печать), но я не могу понять, как удалить комментарии с помощью этого инструмента.
Также посмотрите XMLStarlet , набор инструментов командной строки, позволяющих делать с xml все, что угодно. Затем выполните:
xml c14n --without-comments # XML file canonicalization w/o comments
EDIT : OP в конечном итоге использовал эту строку:
xmlstarlet c14n --without-comments old.xml > new.xml
Лучшим способом было бы использовать синтаксический анализатор XML для правильной обработки всех неясных угловых случаев. Но если вам нужно что-то быстрое и грязное, существует множество коротких решений с использованием регулярных выражений Perl , которых может быть достаточно.