From 4597d5776d7b03e91da4ce12ca9147532b03b5ea Mon Sep 17 00:00:00 2001 From: Ralph Soika Date: Tue, 2 Jan 2024 12:41:30 +0100 Subject: [PATCH] fixed Issue #847 --- .../java/org/imixs/workflow/util/XMLParser.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/imixs-workflow-core/src/main/java/org/imixs/workflow/util/XMLParser.java b/imixs-workflow-core/src/main/java/org/imixs/workflow/util/XMLParser.java index a0e9bdcf..a73947a9 100644 --- a/imixs-workflow-core/src/main/java/org/imixs/workflow/util/XMLParser.java +++ b/imixs-workflow-core/src/main/java/org/imixs/workflow/util/XMLParser.java @@ -159,11 +159,11 @@ public static List findTags(String content, String tag) { /** * This method find not-empty tags inside a string and returns a list with all - * tags. + * tags including the tag itself. *

* e.g.: {@codedef} *

- * Note: To fine also empty tags use 'findTags' + * Note: To find also empty tags use 'findTags' * * @param content - XML data * @param tag - XML tag @@ -171,11 +171,12 @@ public static List findTags(String content, String tag) { */ public static List findNoEmptyTags(String content, String tag) { List result = new ArrayList(); - String regex = "<" + tag + ".*>((.|\n)*?)<\\/" + tag + ">"; - Pattern p = Pattern.compile(regex); - Matcher m = p.matcher(content); - while (m.find()) { - result.add(m.group()); + // Use a regular expression to extract the tag + String regex = "(<" + tag + "[^>]*>[\\s\\S]*?)"; + Pattern pattern = java.util.regex.Pattern.compile(regex); + Matcher matcher = pattern.matcher(content); + while (matcher.find()) { + result.add(matcher.group()); } return result; }