Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从xml中删除多行_Xml_Lines - Fatal编程技术网

从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"&

假设我有这样的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">
            <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>