【问题标题】:JS Regex to remove everything outside certain html tags (including tags)JS Regex 删除某些 html 标签(包括标签)之外的所有内容
【发布时间】:2013-05-01 10:57:47
【问题描述】:

我有一个需要通过 JS REGEX 解析的 SOAP 输出,(我知道有很多 js 库可以完成这项工作,而且我知道 regex 不是解析 html/xml 的最佳方式,但在此情况下,必须通过正则表达式完成)...

这是格式...

*huge header*
<NewDataSet>
*content*
</NewDataSet>
*rest of footer*

我需要删除&lt;NewDataSet&gt;&lt;/NewDataSet&gt; 之外的所有内容(包括它们,并将标签留在*content* 区域中,保持不变...

我一直在努力完成这项工作,但它似乎比我预期的要难......请有人帮忙

【问题讨论】:

  • 为什么必须使用正则表达式?一定有更好的解决方案。
  • 我在&lt;NewDataSet&gt; 标签之间有很多html标签。 *content*,只是对大量 html 标签的表示。但是&lt;NewDataSet&gt;&lt;/NewDataSet&gt; 在整个字符串中是唯一的
  • @VisioN 当我问我的问题时,我已经明确表示我知道不得使用正则表达式来解析 HTML / XML。
  • 这听起来与您最初的要求几乎相反。你只想要*content*,没有别的?

标签: javascript html regex xml-parsing


【解决方案1】:

听起来你有 javascript,因为你提到想要使用 javascript 正则表达式,为什么不使用这样的 javascript?

http://jsfiddle.net/gHwd6/1/

var ds = document.getElementsByTagName('NewDataSet')[0];
var t = ds.getElementsByTagName('NewTable')[0];
ds.parentNode.replaceChild(t, ds);

这假设只有一个NewDataSet 标记和NewDataSet 中只有一个您想要保留的表,名为NewTable。听起来您每个人都只有一个,因此您只需将 NewTable 更改为您的名称即可。

编辑在看到您最近的 cmets/edit 似乎改变了您的要求后,请尝试对您收到的数据执行此操作:

myData = myData.getElementsByTagName('NewDataSet')[0].innerHTML;

这是一个显示它的应用程序的示例(查看您的控制台以查看它正在返回您想要的输出):http://jsfiddle.net/qmnNn/

请通过查看答案或评论来回复,让我们知道某些东西是否对您有用或您可能仍然遇到什么问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多