Просто используйте специальный язык XSLT , предназначенный для преобразования файлов XML для запуска необходимого выражения XPath.В частности, вызовите преобразование идентичности, чтобы скопировать весь документ как есть и удалить все другие узлы, которые не соответствуют критериям, с пустым шаблоном.
Почти каждый современный язык программирования (Java, C #, Python, PHP, Perl, R,VB, даже Bash и PowerShell) и некоторые программы (Excel, SAS и т. Д.) Поддерживают XSLT 1.0, как правило, через библиотеку или модуль XML.Кроме того, выделенные процессоры могут запускать ваш XSLT-скрипт, включая Saxon, Xalan, xsltproc.См. страница тега для получения дополнительной информации.
XSLT (сохранить как файл .xsl, специальный файл .xml)
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- IDENTITY TRANSFORM -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- REMOVE NODES -->
<xsl:template match="o[normalize-space(cat) != 'category2']"/>
</xsl:stylesheet>
Онлайн-демонстрация
Несколько примеров процессора XSLT:
Xalan командная строка (с компилятором Java)
java org.apache.xalan.xslt.Process -IN source.xml -XSL script.xsl -OUT output.xml
Saxon командные строки (с Java-компилятором)
java net.sf.saxon.Transform -s:source.xml -xsl:script.xsl -o:output.xml
java -jar dir/saxon9he.jar -s:source.xml -xsl:script.xsl -o:output.xml
xsltproc командная строка (для машин Unix)
xsltproc myScript.xsl Output.xml > myDesiredResult.xml
Powershell скрипт (для машин Windows)
$xslt = New-Object System.Xml.Xsl.XslCompiledTransform;
$xslt.Load("C:\Path\To\Script.xsl");
$xslt.Transform("C:\Path\To\Input.xml", "C:\Path\To\Output.xml");