我想在记事本++(或其他FOSS文本编辑器)中完全删除一个标记/节点(包括儿童),这些标记/节点可能/可能没有孩子,可能还有孙子等等...我已经尝试了正则表达式(在其他一些SO问题上注明)但是这些节点/标签的多线方面有问题。
<exampleTag id="blah" name="bob">
<childTag possible="element" />
<moreChildren>
<evenAnotherLevel />
</moreChildren>
</exampleTag>
有趣的是textWrangler和notepad ++都可以折叠节点以便于阅读:
这样可以轻松地手动删除整个内容,但这对于可能有10000或更多这些标记的文件不起作用。有没有可以做到这一点的工具/插件?现在我打破node.js来完成这项工作,但这不是一个非专业人士的解决方案。
答案 0 :(得分:0)
您可以直接从Notepad ++使用XSLT转换。因此,您需要删除内部具有所有内部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="exampleTag"/> <!-- The tags we want to remove are here -->
</xsl:stylesheet>
现在,将其另存为磁盘上的* .xslt文件。然后,在Notepad ++中打开XML并转到插件 - &gt; XML工具 - &gt; XSL转换。提供XSLT文件的路径:
然后点击转换。
答案 1 :(得分:0)
在BBEdit,TextWrangler和其他使用PCRE(Perl兼容正则表达式)的文本编辑器上,您可以设置“Magic Dot”选项(允许匹配\ r和\ n),方法是放在你的前面搜索(?s)
另外,在查找关闭的XML标记时,请务必使用非贪婪的搜索?之后的任何模式,如。*,否则可以匹配结束标记。
例如,在TextWrangler中,您可以搜索
(?s)^ <exampleTag code="[0-9]*" name="[0-9]* - .*?</exampleTag>$.
并替换为零。这将找到每个&lt; exampleTag在带有数字代码的换行符之后开始4个空格并且具有包含数字序列的名称 - 任何(非贪婪的)直到结束&lt; / exampleTag&gt;然后换行。决赛。最后确保新行也将被删除。 (在Windows上,你可能需要两个点来表示cr-lf。)