我正在使用textimage组件并添加" paraformat"在rteplugins。
当我在对话框中提供值时,它将保存为属性&#34; text&#34;:<h1>heading1</h1><h2>Heading2</h2><h3>Heading3</h3><p>Paragraph</p>
现在,我想获得个人价值,例如。在这种情况下,heading1,heading2等。
我可以应用一些字符串函数。但是,有没有人知道获得这些价值的任何直接方法?
答案 0 :(得分:0)
在这里你使用文本组件示例希望同样有帮助(因为不建议用正则表达式解析HTML,但是你可以在回答下面给出一些想法)
使用rtePlugins创建一个组件,如下所示 text.jsp代码
<%@page session="false"%>
<%@ page import="com.day.cq.wcm.foundation.Placeholder,java.util.regex.Matcher,java.util.regex.Pattern" %>
<%@include file="/libs/foundation/global.jsp"%><%
%><cq:text property="text" escapeXml="true"
placeholder="<%= Placeholder.getDefaultPlaceholder(slingRequest, component, null)%>"/>
<!-- Below code to demonstrate the Retrieval of paraformat -->
<% String defaultMessage = properties.get("text", "");
// the pattern we want to search for
Pattern p = Pattern.compile("<p>(.*?)</p>");
Pattern h1 = Pattern.compile("<h1>(.*?)</h1>");
Pattern h2 = Pattern.compile("<h2>(.*?)</h2>");
Pattern h3 = Pattern.compile("<h3>(.*?)</h3>");
Matcher mp = p.matcher(defaultMessage);
Matcher mh1 = h1.matcher(defaultMessage);
Matcher mh2 = h2.matcher(defaultMessage);
Matcher mh3 = h3.matcher(defaultMessage);
// if we find a match, get the group
if (mp.find()) {
// get the matching group
String parastring = mp.group(1);
// print the group
out.println("tag P : "+parastring +"</br>");
}
if (mh1.find()) {
// get the matching group
String h1string = mh1.group(1);
// print the group
out.println("tag h1 : "+h1string +"</br>");
}
if (mh2.find()) {
// get the matching group
String h2string = mh2.group(1);
// print the group
out.println("tag h2 : "+h2string +"</br>");
}
if (mh3.find()) {
// get the matching group
String h3string = mh3.group(1);
// print the group
out.println("tag h3 : "+h3string +"</br>");
}
%>
最后在页面中,您可以使用jsp代码中显示的java.util.regex.*;
包来检索文本(这不是为了了解如何满足您正在寻找的要求而进行的优化)。