Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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文件中的第n个元素+;?_Xml_Macros_Automation_Notepad++ - Fatal编程技术网

如何使用记事本替换xml文件中的第n个元素+;?

如何使用记事本替换xml文件中的第n个元素+;?,xml,macros,automation,notepad++,Xml,Macros,Automation,Notepad++,示例XML <animal> <dog>rex</dog> <dog>rex</dog> <dog>rex</dog> </animal> 雷克斯 雷克斯 雷克斯 使用Notpad++可以替换第三个dog元素的值。所以本质上我想找到动物的第三个孩子并替换这个值 我觉得这可能是不可能的,我必须写一些脚本来实现这一点。但无论如何,这总是值得一问 如果您感兴趣,请提供背景详细信

示例XML

<animal>
    <dog>rex</dog>
    <dog>rex</dog>
    <dog>rex</dog>
</animal>

雷克斯
雷克斯
雷克斯
使用Notpad++可以替换第三个dog元素的值。所以本质上我想找到动物的第三个孩子并替换这个值

我觉得这可能是不可能的,我必须写一些脚本来实现这一点。但无论如何,这总是值得一问

如果您感兴趣,请提供背景详细信息。


我有数百个XML文档,其中必须替换元素的第三、第四和第五个子元素的值。我正在寻找最简单的方法。办公室里的许多人都使用notepad++,因此如果有一个使用notepad++的解决方案,那将是理想的

记事本++的特点就是它

编辑2012年11月8日:从记事本++6.0开始,上述内容不再适用。但它适用于5.x

对于文本替换,它有普通模式、扩展模式和正则表达式模式,这些模式缺少一些东西。然而,最后两种方法可以结合起来产生良好的效果(事实上,有时将处理过程分成几个部分更为清晰)

解决方案不明确但有效:

启动
搜索->在文件中查找(CTRL-SHIFT-F),指定目录和筛选器,然后:

  • 去除任何空格(空格、制表符缩进)和换行符-使用搜索模式=扩展的替换,连续:查找内容=
    \r\n
    \t
    ,在每种情况下替换为=
    。在这之后,就有了一个单行程序,这是N++在regexp处理中所喜欢的
  • 现在在搜索模式=正则表达式中执行操作:
    • 查找内容=
      (.*)(.*)(.*)(.*)(.*)(.*)(.*)
    • 替换为=
      \1\2\3aaa\4bbb\5ccc
  • TextFX->TextFX HTML Tidy->Tidy:Reindent XML以恢复XML格式(可能在空格数等方面略有不同)
在步骤1和2中,单击“在文件中替换”以执行

字符串
\1
,…,
\5
表示连续节点的值(regexp中括号中的值)。将其放置或保留,并添加任何您想要的任意文本。
(.*?
是一个正则表达式,它匹配任何字符,并且是ungreedin(
代表ungreediness),因此它将只匹配尽可能短的片段(否则它可能会找到比文件中更少的