RegEx删除特定的XML元素

时间:2018-08-30 03:57:19

标签: regex xml

我正在使用Kate处理文本以创建XML文件,但遇到了障碍。该文本现在包含我需要根据其内容删除的其他数据。

具体来说,我有一个XML元素,称为,其中包含0个或多个元素,其中包含其他元素,例如,<name>等。尽管我可能会排除它们使用XSL运行时,该文件还驱动了另一个我不想碰的进程-它是Scribus的通用数据导入器,因此我不想碰编码。</p> <p>如果<title>内容不是我想要的,我想做的就是删除一个<nzl>元素。例如,我不想要第一副总裁,所以我想删除:</p> <pre><code><input></code></pre> <p>我不知道任何<legs>元素中有多少行,也不知道它们在<legs>元素中的位置。</p> <p>最简单的部分是我要删除的内容的开头。困难的部分是到达</leg>结束标记。到目前为止,我发现的所有解决方案都导致Kate决定RegEx无效。</p> <p>任何建议都值得赞赏。</p> </div> <div class="answer-list"> <h4>1 个答案:</h4> <div class="hr-line-dashed"></div> <p>答案 0 :(得分:1)</p> <div class="answer markdown-body"> <p>正则表达式是这项工作的错误工具;在没有适当的解析器的情况下,切勿处理XML,除非可能是在单个文档上进行一次性工作,否则您将在运行并手动检查结果后将代码丢弃。您可能会发现一个可用于一个示例文档的正则表达式,但您永远无法使其在一组精心设计的100个测试文档中正常工作。</p> <p>使用XSLT即可轻松完成。这是一个具有两个模板规则的样式表:一个默认的“身份模板”规则,用于不变地复制元素,另一个规则用于删除不需要的元素。实际上,在XSLT 3.0中,它变得更加简单:</p> <pre><code><xsl:mode on-no-match="shallow-copy"/> <xsl:template match="officer[title='First VP']"/> </code></pre> </div> </div> </div> <div class="right"> <div style="height:400px"> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6263610230477973" data-ad-slot="2820756182" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div style="height:20px"></div> <div class="releated-question-wrapper"> <div class="header"> 相关问题 </div> <div class="hr-line-dashed"></div> <ul> <li> <a href="/q/1768223">Ruby Regexp用于提取XML字符串中的特定元素</a> </li> <li> <a href="/q/9097543">删除Java中的空XML元素</a> </li> <li> <a href="/q/21762292">XSL在转换后删除特定的空元素</a> </li> <li> <a href="/q/39789254">删除空元素xml字符串java?</a> </li> <li> <a href="/q/44643747">正则表达式删除特定的单词</a> </li> <li> <a href="/q/45041733">使用xslt基于值删除特定元素</a> </li> <li> <a href="/q/50869413">特定XML元素的正则表达式</a> </li> <li> <a href="/q/52089016">RegEx删除特定的XML元素</a> </li> <li> <a href="/q/53342341">如何在XSLT中删除属性具有特定值的元素</a> </li> </ul> </div> <div class="releated-question-wrapper"> <div class="header"> 最新问题 </div> <div class="hr-line-dashed"></div> <ul> <li> <a href="/q/68614764">我写了这段代码,但我无法理解我的错误</a> </li> <li> <a href="/q/68614678">我无法从一个代码实例的列表中删除 None 值,但我可以在另一个实例中。为什么它适用于一个细分市场而不适用于另一个细分市场?</a> </li> <li> <a href="/q/68614175">是否有可能使 loadstring 不可能等于打印?卢阿</a> </li> <li> <a href="/q/68614313">java中的random.expovariate()</a> </li> <li> <a href="/q/68614125">Appscript 通过会议在 Google 日历中发送电子邮件和创建活动</a> </li> <li> <a href="/q/68615109">为什么我的 Onclick 箭头功能在 React 中不起作用?</a> </li> <li> <a href="/q/68615123">在此代码中是否有使用“this”的替代方法?</a> </li> <li> <a href="/q/68614097">在 SQL Server 和 PostgreSQL 上查询,我如何从第一个表获得第二个表的可视化</a> </li> <li> <a href="/q/68614427">每千个数字得到</a> </li> <li> <a href="/q/68615239">更新了城市边界 KML 文件的来源?</a> </li> </ul> </div> <div class=""> </div> </div> </div> <div> <script> var host = window.location.host; if (host == "www.thinbug.com") { (function () { var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); } </script> </body> </html>