diff --git a/ui/org.eclipse.pde.genericeditor.extension/META-INF/MANIFEST.MF b/ui/org.eclipse.pde.genericeditor.extension/META-INF/MANIFEST.MF index 26891db6002..cb86c60b2d7 100644 --- a/ui/org.eclipse.pde.genericeditor.extension/META-INF/MANIFEST.MF +++ b/ui/org.eclipse.pde.genericeditor.extension/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.pde.genericeditor.extension;singleton:=true -Bundle-Version: 1.3.100.qualifier +Bundle-Version: 1.3.200.qualifier Bundle-Localization: plugin Require-Bundle: org.eclipse.core.runtime, org.eclipse.jface.text, diff --git a/ui/org.eclipse.pde.genericeditor.extension/src/org/eclipse/pde/internal/genericeditor/target/extension/model/xml/XMLElement.java b/ui/org.eclipse.pde.genericeditor.extension/src/org/eclipse/pde/internal/genericeditor/target/extension/model/xml/XMLElement.java index 9364d547b6e..1e4ad16e1ff 100644 --- a/ui/org.eclipse.pde.genericeditor.extension/src/org/eclipse/pde/internal/genericeditor/target/extension/model/xml/XMLElement.java +++ b/ui/org.eclipse.pde.genericeditor.extension/src/org/eclipse/pde/internal/genericeditor/target/extension/model/xml/XMLElement.java @@ -19,6 +19,13 @@ import java.util.regex.Pattern; public class XMLElement { + private static final Pattern START_ELEMENT_NAME_PATTERN = Pattern.compile("<\\s*(?\\w*).*", Pattern.DOTALL); //$NON-NLS-1$ + private static final Pattern END_ELEMENT_NAME_PATTERN = Pattern.compile("\\w*).*", Pattern.DOTALL); //$NON-NLS-1$ + private static final Pattern ATTRIBUTE_PATTERN = Pattern.compile("((?\\w*)\\s*=\\s*\"(?.*?)\")", //$NON-NLS-1$ + Pattern.DOTALL); + private static final Pattern START_ELEMENT_PATTERN = Pattern.compile("<[^/].*", Pattern.DOTALL); //$NON-NLS-1$ + private static final Pattern END_ELEMENT_PATTERN = Pattern.compile(".*", Pattern.DOTALL); //$NON-NLS-1$ + private final String element; private final int offset; private final String name; @@ -26,27 +33,23 @@ public class XMLElement { private final boolean isEndElement; private final boolean isStartElement; - private final Pattern startElementNamePattern = Pattern.compile("<\\s*(?\\w*).*", Pattern.DOTALL); //$NON-NLS-1$ - private final Pattern endElementNamePattern = Pattern.compile("\\w*).*", Pattern.DOTALL); //$NON-NLS-1$ - private final Pattern attributePattern = Pattern.compile("((?\\w*)\\s*=\\s*\"(?.*?)\")", Pattern.DOTALL);//$NON-NLS-1$ - public XMLElement(String element, int offset) { this.element = element; this.offset = offset; - this.isEndElement = element.matches("(.|\n)*"); //$NON-NLS-1$ - this.isStartElement = element.matches("<[^/](.|\n)*"); //$NON-NLS-1$ + this.isEndElement = END_ELEMENT_PATTERN.matcher(element).matches(); + this.isStartElement = START_ELEMENT_PATTERN.matcher(element).matches(); Pattern namePattern; if (isStartElement()) { - namePattern = startElementNamePattern; + namePattern = START_ELEMENT_NAME_PATTERN; } else { - namePattern = endElementNamePattern; + namePattern = END_ELEMENT_NAME_PATTERN; } Matcher nameMatcher = namePattern.matcher(element); nameMatcher.matches(); name = nameMatcher.group("name"); //$NON-NLS-1$ - Matcher attrMatcher = attributePattern.matcher(element); + Matcher attrMatcher = ATTRIBUTE_PATTERN.matcher(element); while (attrMatcher.find()) { String key = attrMatcher.group("key"); //$NON-NLS-1$ String value = attrMatcher.group("value"); //$NON-NLS-1$