Xml 删除包含X的根节点 36037 4. 30 下降
My.XML文件包含14000行,删除的值出现125次。我想删除根节点和其中的所有内容(如果它包含已删除的Xml 删除包含X的根节点 36037 4. 30 下降,xml,notepad++,Xml,Notepad++,My.XML文件包含14000行,删除的值出现125次。我想删除根节点和其中的所有内容(如果它包含已删除的)。是否有一种方法可以批量删除它,或者手动删除是唯一的方法?考虑运行一种专门用于转换XML文件的语言,例如根据特定条件删除节点。具体来说,运行以按原样复制文档和空模板以有条件地删除所需的元素 您可以在几乎任何通用语言(如C#、Java、Python、PHP,甚至VBA)中运行XSLT1.0脚本,就像其他专用语言(SQL)一样。此外,专用的独立工具甚至可以运行XSLT2.0和3.0。看 XSL
)
。是否有一种方法可以批量删除它,或者手动删除是唯一的方法?考虑运行一种专门用于转换XML文件的语言,例如根据特定条件删除节点。具体来说,运行以按原样复制文档和空模板以有条件地删除所需的元素
您可以在几乎任何通用语言(如C#、Java、Python、PHP,甚至VBA)中运行XSLT1.0脚本,就像其他专用语言(SQL)一样。此外,专用的独立工具甚至可以运行XSLT2.0和3.0。看
XSLT(另存为.xsl文件,一个特殊的.xml文件)
Windows使用PowerShell脚本调用网络 将下面另存为.ps1脚本
xsltproc -o /path/to/output.xml /path/to/XSLTScript.xsl /path/to/input.xml
命令行调用(将输出新的转换后的XML文件)
您可以通过XSLT处理器(版本1.0及以上)结合使用空模板和标识模板来实现这一点。使用以下XSLT模板删除所有
元素,其中
元素的值已删除:
Powershell.exe -File "C:\Path\To\PowerShell\Script.ps1"^
"C:\Path\To\Input.xml" "C:\Path\To\XSLTScript.xsl" "C:\Path\To\Ouput.xml"
您可以将其应用于Windows和Linux。或者您可用的任何其他XSLT处理器。您真的是指使用“我的状态”值删除当前节点吗?删除根节点将使XML无效。感谢您的回答。因为我不熟悉.XML,所以我使用它作为指导。My.XML文件以
开头,以
结尾。这是所讨论的.XML文件的图片。我上面提到的不是根节点吗?我对Notepad++不太了解,但这听起来像是一项任务。
xsltproc -o /path/to/output.xml /path/to/XSLTScript.xsl /path/to/input.xml
param ($xml, $xsl, $output)
if (-not $xml -or -not $xsl -or -not $output) {
Write-Host "& .\xslt.ps1 [-xml] xml-input [-xsl] xsl-input [-output] transform-output"
exit;
}
trap [Exception]{
Write-Host $_.Exception;
}
$xslt = New-Object System.Xml.Xsl.XslCompiledTransform;
$xslt.Load($xsl);
$xslt.Transform($xml, $output);
Write-Host "generated" $output;
Read-Host -Prompt "Press Enter to exit";
Powershell.exe -File "C:\Path\To\PowerShell\Script.ps1"^
"C:\Path\To\Input.xml" "C:\Path\To\XSLTScript.xsl" "C:\Path\To\Ouput.xml"
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<!-- identity template -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<!-- empty template for all 'mystatus=Dropped` manga elements -->
<xsl:template match="manga[my_status = 'Dropped']" />
</xsl:stylesheet>