【问题标题】:Extract particular content from payload in mule从 mule 中的有效负载中提取特定内容
【发布时间】:2015-08-23 12:00:49
【问题描述】:
   <script type="text/javascript" src="http://xyz.js"></script>
<script type="text/javascript" src="http://abc.js"></script>

我想从有效负载中提取这些 Java 脚本值(我的有效负载非常大。在这里,我显示了需要从有效负载中获取的所需内容)

我想从有效负载中获取所有 js 值(这里计数为 2,但在其他情况下可能更多)并一一检索这些值以用于其他功能。

我不知道如何从有效负载中获取特定内容以及计数是否大于 1,而不知道如何为其他功能一一处理所有计数。

请指教

【问题讨论】:

  • 您能否发布您的代码,以便我们了解您需要的更多信息当有效负载非常大时,我建议使用 groovy 而不是 JavaScript,以便解释您的需求,我们可能会得到一个可能不需要的解决方案完全是 JS。
  • 嘿 Naveen,js 数据在里面,我没有使用 js,它在我的有效负载中。查看源代码:xalkori.com - 转到此链接,这是我的全部有效负载,我想按最初提到的方式获取 js scipt url..请建议..
  • @AnirbanSenChowdhary 请指教..
  • 你打算只提取脚本标签的属性还是内容?如果是前者,一个简单的正则表达式可能会对您有所帮助。但我建议先将 HTML 解析为 DOM(例如 HTML Cleaner),然后使用 XPath 获取元素。 (请参阅我的帮助类转换为 DOM,github.com/avanaur/stock-transactions-uploader/blob/master/src/…
  • 嘿 Tyrone,从这个链接 :-view-source:xalkori.com ,我提取了以下数据

标签: mule payload


【解决方案1】:

您可以使用拆分器,使用“\n”表达式拆分您的第一个站点(列出所有 JS)的内容,然后使用每条消息检查“JS”是否存在,然后无论哪个消息是拥有这些 JS,您可以在列表中捕获它们(使用 groovy 或 java 组件)

【讨论】:

    【解决方案2】:

    正如 Tyrone 所建议的,您可以转换 HTML into a DOM object(可能来自 Mule 组件),这样您就可以检索您希望下载的 JS 文件的所有 URL。获得这些 URL 后,您可以使用与 discussed here 类似的方法。

    【讨论】:

    【解决方案3】:

    如果要提取所有脚本元素的 URL(src 属性的值),请使用此正则表达式来提取它们,\&lt;script[^&gt;]*src="([^\"]*)"[^&gt;]*\&gt;

    <expression-component doc:name="Expression"><![CDATA[import java.util.regex.*;
    import java.util.*;
    
    Matcher myMatcher = Pattern.compile("\\<script[^>]*src=\"([^\\\"]*)\"[^>]*\\>").matcher(payload);
    
    List urls = new ArrayList();
    while (myMatcher.find()) {
        urls.add(myMatcher.group(1));
    }
    
    payload = urls;]]></expression-component>
    

    【讨论】:

    猜你喜欢
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    相关资源
    最近更新 更多