从xml中删除多行
假设我有这样的xml结构:从xml中删除多行,xml,lines,Xml,Lines,假设我有这样的xml结构: <list> <main id="1" name="asd1"> <reward id="5"> <set reward_id="32" value="5123" /> <set reward_id="352" value="12" /> </reward> <reward id="6"&
<list>
<main id="1" name="asd1">
<reward id="5">
<set reward_id="32" value="5123" />
<set reward_id="352" value="12" />
</reward>
<reward id="6">
<set reward_id="72" value="666666" />
<set reward_id="32" value="21" />
</reward>
</main>
</list>
我有30个这样的文件,还有很多行。我的问题是,我想删除每个文件中奖励id为“32”的每一行。一个接一个地这样做需要几个星期。你知道有什么程序可以解决我的问题吗
编辑:每行中的值都会更改,有时属性不止这两个。任何一个好的文本编辑器都可以使用xml插件、搜索和替换以及正则表达式来实现这一点。选择一个,掌握它。编程之神会给你丰厚的回报 我现在选择的武器是
作为替代方案,您可以使用命令行实用程序和shell,例如PowerShell。学习曲线有点陡峭,但它也会带来自身的优势。通过此xsl转换可以轻松地从单个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="set[@reward_id='32']" />
</xsl:stylesheet>
生成了一个文件testout.xml,其中包含:
<list>
<main id="1" name="asd1">
<reward id="5">
<set reward_id="352" value="12"/>
</reward>
<reward id="6">
<set reward_id="72" value="666666"/>
</reward>
</main>
</list>
要将其应用于一组文件,可以创建一个shell脚本来遍历这些文件,并为每个文件应用一个类似于此的命令,但文件名不同。find and replace如果行有点动态,则无法工作。你可以替换静态部分,但是你想用一个空字符串替换整行,动态部分也是。你是程序员吗?然后,你可以使用命令行和另存为BAT文件等工具来创建一些东西。我只是在用Java编程,创建删除这些行的代码对我来说需要时间:/ah,太糟糕了。首先,我不知道有任何现成的免费工具可以做你希望它做的事情。如果你事先知道它们都可以有什么值,您可以执行“查找并替换”。但是,您是否提前知道奖励_id=“32”的所有可能值?不,可能有无穷多个值,因此我可能必须用java创建该工具,或者在将这些XML文件加载到我的程序时,跳过奖励_id为32的行,并保持文件不变:)
<list>
<main id="1" name="asd1">
<reward id="5">
<set reward_id="352" value="12"/>
</reward>
<reward id="6">
<set reward_id="72" value="666666"/>
</reward>
</main>
</list>