CVE-2023-4218: Improper Restriction of XML External Entity Reference (CWE-611)
value: In Eclipse IDE versions < 2023-09 (4.29) some files with xml content are parsed vulnerable against all sorts of XXE attacks. The user just needs to open any evil project or update an open project with a vulnerable file (for example for review a foreign repository or patch).

CWE description: The product processes an XML document that can contain XML entities with URIs that resolve to documents outside of the intended sphere of control, causing the product to embed incorrect documents into its output.
CVSS v3 base score: 5
Published: 2023-11-09T09:15Z
Repository: https://github.com/eclipse-cdt/cdt
Language: Java
Files changed: build/org.eclipse.cdt.autotools.core/META-INF/MANIFEST.MF, build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfigurationManager.java, build/org.eclipse.cdt.autotools.tests/META-INF/MANIFEST.MF, build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/UpdateConfigureTest.java, build/org.eclipse.cdt.autotools.ui.tests/META-INF/MANIFEST.MF, build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/SetConfigurationParameterTest.java, build/org.eclipse.cdt.autotools.ui/META-INF/MANIFEST.MF, build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/text/hover/AutoconfTextHover.java, build/org.eclipse.cdt.make.core/META-INF/MANIFEST.MF, build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/ProjectTargets.java, build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/DiscoveredScannerInfoStore.java, build/org.eclipse.cdt.managedbuilder.core/META-INF/MANIFEST.MF, build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java, build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject12.java, build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject20.java, core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/XMLDumper.java, core/org.eclipse.cdt.core/META-INF/MANIFEST.MF, core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/LanguageMappingStore.java, core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java, core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionStorageManager.java, core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlProjectDescriptionStorage.java, core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlStorageElement.java, core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/UserDefinedVariableSupplier.java, core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/SharedDefaults.java, core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateDescriptor.java, core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/XmlProcessorFactoryCdt.java, core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/XmlUtil.java, core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/envvar/StorableEnvironmentLoader.java, core/org.eclipse.cdt.ui.tests/META-INF/MANIFEST.MF, core/org.eclipse.cdt.ui.tests/pom.xml, core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/templateengine/TestSharedDefaults.java, core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF, core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CHelpProviderManager.java, core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/help/CHelpProvider.java, core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/ProfileStore.java, core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/ProjectSettingsExportStrategy.java, core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/ProjectSettingsImportStrategy.java, debug/org.eclipse.cdt.debug.core/META-INF/MANIFEST.MF, debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDebugUtils.java, debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/breakpointactions/BreakpointActionManager.java, debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CDirectorySourceLocation.java, debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CProjectSourceLocation.java, debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLocator.java, debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/SourceUtils.java, debug/org.eclipse.cdt.debug.ui/META-INF/MANIFEST.MF, debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ExternalToolAction.java, debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/LogAction.java, debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ResumeAction.java, debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ReverseDebugAction.java, debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/SoundAction.java, debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/SoundActionPage.java, debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/sourcelookup/OldDefaultSourceLocator.java, dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/META-INF/MANIFEST.MF, dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/utils/MementoUtils.java, dsf-gdb/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF, dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/tracepointactions/CollectAction.java, dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/tracepointactions/EvaluateAction.java, dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/tracepointactions/TracepointActionManager.java, dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/tracepointactions/WhileSteppingAction.java, testsrunner/org.eclipse.cdt.testsrunner.boost/META-INF/MANIFEST.MF, testsrunner/org.eclipse.cdt.testsrunner.boost/src/org/eclipse/cdt/testsrunner/internal/boost/BoostTestsRunnerProvider.java, testsrunner/org.eclipse.cdt.testsrunner.qttest/META-INF/MANIFEST.MF, testsrunner/org.eclipse.cdt.testsrunner.qttest/src/org/eclipse/cdt/testsrunner/internal/qttest/QtTestsRunnerProvider.java
Commit date: 2023-08-16 11:06:59 -0400
Commit message: Refactor XML file handling

Diff: diff --git a/build/org.eclipse.cdt.autotools.core/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.autotools.core/META-INF/MANIFEST.MF
index 50ceeff5b3..0d6ccda43f 100644
--- a/build/org.eclipse.cdt.autotools.core/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.autotools.core/META-INF/MANIFEST.MF
@@ -1,21 +1,21 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name.0
 Bundle-SymbolicName: org.eclipse.cdt.autotools.core;singleton:=true
-Bundle-Version: 2.2.0.qualifier
+Bundle-Version: 2.2.100.qualifier
 Bundle-Activator: org.eclipse.cdt.autotools.core.AutotoolsPlugin
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.ui;bundle-version="3.4.0",
  org.eclipse.core.runtime;bundle-version="3.4.0",
  org.eclipse.jface.text;bundle-version="3.4.0",
  org.eclipse.ui.editors;bundle-version="3.4.0",
  org.eclipse.ui.workbench.texteditor;bundle-version="3.4.0",
  org.eclipse.core.resources;bundle-version="3.4.0",
  org.eclipse.ui.ide;bundle-version="3.4.0",
  org.eclipse.cdt.managedbuilder.core;bundle-version="5.0.100",
- org.eclipse.cdt.core;bundle-version="6.5.0",
+ org.eclipse.cdt.core;bundle-version="8.3.0",
  org.eclipse.cdt.ui;bundle-version="5.1.0",
  org.eclipse.cdt.managedbuilder.ui;bundle-version="5.0.100",
  org.eclipse.cdt.managedbuilder.gnu.ui;bundle-version="5.0.100",
  org.eclipse.cdt.make.core;bundle-version="5.1.0",
  org.eclipse.cdt.make.ui;bundle-version="5.0.100",
diff --git a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfigurationManager.java b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfigurationManager.java
index aa418c7c7a..2f4db8600f 100644
--- a/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfigurationManager.java
+++ b/build/org.eclipse.cdt.autotools.core/src/org/eclipse/cdt/internal/autotools/core/configure/AutotoolsConfigurationManager.java
@@ -25,21 +25,21 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Random;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 
 import org.eclipse.cdt.autotools.core.AutotoolsNewProjectNature;
 import org.eclipse.cdt.autotools.core.AutotoolsPlugin;
 import org.eclipse.cdt.autotools.core.IAutotoolsOption;
 import org.eclipse.cdt.core.model.CoreModel;
 import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
 import org.eclipse.cdt.core.settings.model.ICProjectDescription;
 import org.eclipse.cdt.core.settings.model.extension.CConfigurationData;
 import org.eclipse.cdt.internal.autotools.core.configure.AutotoolsConfiguration.Option;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.cdt.managedbuilder.core.BuildException;
 import org.eclipse.cdt.managedbuilder.core.IConfiguration;
 import org.eclipse.cdt.managedbuilder.core.IHoldsOptions;
 import org.eclipse.cdt.managedbuilder.core.IOption;
 import org.eclipse.cdt.managedbuilder.core.ITool;
@@ -53,10 +53,11 @@ import org.eclipse.core.resources.IResourceDelta;
 import org.eclipse.core.resources.IWorkspaceRoot;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Status;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
@@ -201,12 +202,11 @@ public class AutotoolsConfigurationManager implements IResourceChangeListener {
 		if (list == null) {
 			try {
 				IPath fileLocation = project.getLocation().append(CFG_FILE_NAME);
 				File dirFile = fileLocation.toFile();
 				Map<String, IAConfiguration> cfgList = new HashMap<>();
-				DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-				DocumentBuilder db = dbf.newDocumentBuilder();
+				DocumentBuilder db = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 				if (dirFile.exists()) {
 					Document d = db.parse(dirFile);
 					Element e = d.getDocumentElement();
 					// Get the stored configuration data
 					NodeList cfgs = e.getElementsByTagName("configuration"); //$NON-NLS-1$
@@ -267,11 +267,12 @@ public class AutotoolsConfigurationManager implements IResourceChangeListener {
 						configs.put(projectName, cfgList);
 						list = cfgList;
 					}
 				}
 			} catch (ParserConfigurationException | SAXException | IOException e) {
-				e.printStackTrace();
+				Platform.getLog(AutotoolsConfigurationManager.class)
+						.error("Error while parsing .autotools file in project", e); //$NON-NLS-1$
 			}
 		}
 		return list;
 	}
 
diff --git a/build/org.eclipse.cdt.autotools.tests/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.autotools.tests/META-INF/MANIFEST.MF
index 5f90194062..950adb2ed4 100644
--- a/build/org.eclipse.cdt.autotools.tests/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.autotools.tests/META-INF/MANIFEST.MF
@@ -1,21 +1,21 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundleName
 Bundle-SymbolicName: org.eclipse.cdt.autotools.tests;singleton:=true
-Bundle-Version: 2.1.0.qualifier
+Bundle-Version: 2.1.100.qualifier
 Bundle-Vendor: %provider
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
  org.eclipse.core.resources,
  org.eclipse.cdt.managedbuilder.core,
  org.eclipse.cdt.ui,
  org.junit,
  org.eclipse.ui.ide,
  org.eclipse.jface.text,
- org.eclipse.cdt.core,
+ org.eclipse.cdt.core;bundle-version="8.3.0",
  org.eclipse.cdt.autotools.ui;bundle-version="1.0.0",
  org.eclipse.cdt.core.tests
 Bundle-ActivationPolicy: lazy
 Fragment-Host: org.eclipse.cdt.autotools.core
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/UpdateConfigureTest.java b/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/UpdateConfigureTest.java
index 9b7703a080..a28b2d6152 100644
--- a/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/UpdateConfigureTest.java
+++ b/build/org.eclipse.cdt.autotools.tests/src/org/eclipse/cdt/autotools/tests/UpdateConfigureTest.java
@@ -23,18 +23,18 @@ import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
 import java.util.Map;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 
 import org.eclipse.cdt.autotools.core.AutotoolsOptionConstants;
 import org.eclipse.cdt.autotools.core.IAutotoolsOption;
 import org.eclipse.cdt.core.model.CoreModel;
 import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
 import org.eclipse.cdt.internal.autotools.core.configure.AutotoolsConfigurationManager;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.cdt.managedbuilder.core.IConfiguration;
 import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
 import org.eclipse.cdt.managedbuilder.core.ManagedCProjectNature;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
@@ -533,12 +533,11 @@ public class UpdateConfigureTest {
 
 		// Verify one updated option in the .autotools file for the project
 		try {
 			IPath fileLocation = testProject.getLocation().append(".autotools"); //$NON-NLS-1$
 			File dirFile = fileLocation.toFile();
-			DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-			DocumentBuilder db = dbf.newDocumentBuilder();
+			DocumentBuilder db = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			assertTrue(dirFile.exists());
 			Document d = db.parse(dirFile);
 			Element e = d.getDocumentElement();
 			// Get the stored configuration data
 			NodeList cfgs = e.getElementsByTagName("configuration"); //$NON-NLS-1$
diff --git a/build/org.eclipse.cdt.autotools.ui.tests/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.autotools.ui.tests/META-INF/MANIFEST.MF
index 480e62dc1f..d60a8d99f3 100644
--- a/build/org.eclipse.cdt.autotools.ui.tests/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.autotools.ui.tests/META-INF/MANIFEST.MF
@@ -1,14 +1,14 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundleName
 Bundle-SymbolicName: org.eclipse.cdt.autotools.ui.tests
-Bundle-Version: 1.1.0.qualifier
+Bundle-Version: 1.1.100.qualifier
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.swtbot.go,
  org.eclipse.core.resources,
- org.eclipse.cdt.core
+ org.eclipse.cdt.core;bundle-version="8.3.0"
 Bundle-ActivationPolicy: lazy
 Fragment-Host: org.eclipse.cdt.autotools.ui
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-Vendor: %provider
 Automatic-Module-Name: org.eclipse.cdt.autotools.ui.tests
diff --git a/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/SetConfigurationParameterTest.java b/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/SetConfigurationParameterTest.java
index 19ca5536ed..2cc4a0af76 100644
--- a/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/SetConfigurationParameterTest.java
+++ b/build/org.eclipse.cdt.autotools.ui.tests/src/org/eclipse/cdt/autotools/ui/tests/SetConfigurationParameterTest.java
@@ -22,12 +22,12 @@ import java.io.File;
 import java.io.FileReader;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IWorkspace;
 import org.eclipse.core.resources.IWorkspaceRoot;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.IPath;
@@ -106,12 +106,11 @@ public class SetConfigurationParameterTest extends AbstractTest {
 		IPath path = project.getLocation();
 		path = path.append(".autotools");
 		File f = new File(path.toOSString());
 		assertTrue(f.exists());
 
-		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-		DocumentBuilder db = dbf.newDocumentBuilder();
+		DocumentBuilder db = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 		Document d = db.parse(f);
 		Element e = d.getDocumentElement();
 		// Get the stored configuration data
 		NodeList cfgs = e.getElementsByTagName("configuration"); //$NON-NLS-1$
 		assertTrue(cfgs.getLength() > 0);
@@ -318,12 +317,11 @@ public class SetConfigurationParameterTest extends AbstractTest {
 		f = new File(path.toOSString());
 		assertTrue(!f.exists());
 		path = project.getLocation().append(".autotools");
 		f = new File(path.toOSString());
 		assertTrue(f.exists());
-		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-		DocumentBuilder db = dbf.newDocumentBuilder();
+		DocumentBuilder db = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 		Document d = db.parse(f);
 		Element e = d.getDocumentElement();
 		// Get the stored configuration data
 		NodeList cfgs = e.getElementsByTagName("configuration"); //$NON-NLS-1$
 		assertEquals(4, cfgs.getLength());
diff --git a/build/org.eclipse.cdt.autotools.ui/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.autotools.ui/META-INF/MANIFEST.MF
index e3cf7ec011..0402e3316c 100644
--- a/build/org.eclipse.cdt.autotools.ui/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.autotools.ui/META-INF/MANIFEST.MF
@@ -1,17 +1,17 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name.0
 Bundle-SymbolicName: org.eclipse.cdt.autotools.ui;singleton:=true
-Bundle-Version: 2.2.100.qualifier
+Bundle-Version: 2.2.200.qualifier
 Bundle-Activator: org.eclipse.cdt.autotools.ui.AutotoolsUIPlugin
 Bundle-Localization: plugin
 Bundle-Vendor: %provider
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
  org.eclipse.cdt.autotools.core;bundle-version="1.0.0",
- org.eclipse.cdt.core;bundle-version="5.1.0",
+ org.eclipse.cdt.core;bundle-version="8.3.0",
  org.eclipse.core.resources;bundle-version="3.5.0",
  org.eclipse.cdt.managedbuilder.core;bundle-version="6.0.0",
  org.eclipse.jface.text;bundle-version="3.5.0",
  org.eclipse.ui.editors;bundle-version="3.5.0",
  org.eclipse.cdt.ui;bundle-version="5.1.0",
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/text/hover/AutoconfTextHover.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/text/hover/AutoconfTextHover.java
index 39ce54a840..d9fcb14782 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/text/hover/AutoconfTextHover.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/text/hover/AutoconfTextHover.java
@@ -40,10 +40,11 @@ import org.eclipse.cdt.autotools.ui.editors.IAutotoolEditorActionDefinitionIds;
 import org.eclipse.cdt.internal.autotools.core.AutotoolsPropertyConstants;
 import org.eclipse.cdt.internal.autotools.ui.CWordFinder;
 import org.eclipse.cdt.internal.autotools.ui.HTMLPrinter;
 import org.eclipse.cdt.internal.autotools.ui.HTMLTextPresenter;
 import org.eclipse.cdt.internal.autotools.ui.preferences.AutotoolsEditorPreferenceConstants;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.core.filesystem.URIUtil;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.FileLocator;
@@ -166,16 +167,18 @@ public class AutoconfTextHover implements ITextHover, ITextHoverExtension {
 							docStream = url.openStream();
 						} else {
 							docStream = new FileInputStream(p.toFile());
 						}
 					}
-					DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+					DocumentBuilderFactory factory = XmlProcessorFactoryCdt
+							.createDocumentBuilderFactoryIgnoringDOCTYPE();
 					factory.setValidating(false);
 					try {
 						DocumentBuilder builder = factory.newDocumentBuilder();
 						doc = builder.parse(docStream);
 					} catch (SAXException | ParserConfigurationException | IOException saxEx) {
+						AutotoolsPlugin.log(saxEx);
 						doc = null;
 					} finally {
 						if (docStream != null)
 							docStream.close();
 					}
@@ -216,11 +219,12 @@ public class AutoconfTextHover implements ITextHover, ITextHoverExtension {
 							docStream = url.openStream();
 						} else {
 							docStream = new FileInputStream(p.toFile());
 						}
 					}
-					DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+					DocumentBuilderFactory factory = XmlProcessorFactoryCdt
+							.createDocumentBuilderFactoryIgnoringDOCTYPE();
 					factory.setValidating(false);
 					try {
 						DocumentBuilder builder = factory.newDocumentBuilder();
 						doc = builder.parse(docStream);
 					} catch (SAXException | ParserConfigurationException | IOException ex) {
diff --git a/build/org.eclipse.cdt.make.core/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.make.core/META-INF/MANIFEST.MF
index d275926573..8a0af3cccd 100644
--- a/build/org.eclipse.cdt.make.core/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.make.core/META-INF/MANIFEST.MF
@@ -1,10 +1,10 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.cdt.make.core; singleton:=true
-Bundle-Version: 7.6.200.qualifier
+Bundle-Version: 7.6.300.qualifier
 Bundle-Activator: org.eclipse.cdt.make.core.MakeCorePlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Export-Package: org.eclipse.cdt.make.core,
  org.eclipse.cdt.make.core.makefile,
@@ -17,11 +17,11 @@ Export-Package: org.eclipse.cdt.make.core,
  org.eclipse.cdt.make.internal.core.scannerconfig;x-internal:=true,
  org.eclipse.cdt.make.internal.core.scannerconfig.gnu;x-internal:=true,
  org.eclipse.cdt.make.internal.core.scannerconfig.jobs;x-internal:=true,
  org.eclipse.cdt.make.internal.core.scannerconfig.util;x-internal:=true,
  org.eclipse.cdt.make.internal.core.scannerconfig2;x-internal:=true
-Require-Bundle: org.eclipse.cdt.core;bundle-version="[8.0.0,9.0.0)",
+Require-Bundle: org.eclipse.cdt.core;bundle-version="[8.3.0,9.0.0)",
  org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.core.variables;bundle-version="[3.1.100,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.core.filesystem;bundle-version="1.2.0",
  org.eclipse.tools.templates.core;bundle-version="1.1.0",
diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/ProjectTargets.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/ProjectTargets.java
index 1a53a4004b..9c29eef67d 100644
--- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/ProjectTargets.java
+++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/ProjectTargets.java
@@ -22,16 +22,15 @@ import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map.Entry;
 
-import javax.xml.parsers.DocumentBuilderFactory;
-
 import org.eclipse.cdt.core.CCorePlugin;
 import org.eclipse.cdt.core.ICDescriptor;
 import org.eclipse.cdt.core.settings.model.ICStorageElement;
 import org.eclipse.cdt.core.settings.model.XmlStorageUtil;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.cdt.make.core.IMakeCommonBuildInfo;
 import org.eclipse.cdt.make.core.IMakeTarget;
 import org.eclipse.cdt.make.core.MakeCorePlugin;
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IProject;
@@ -235,11 +234,11 @@ public class ProjectTargets {
 	 *
 	 * @return ICStorageElement or null
 	 */
 	protected ICStorageElement translateInputStreamToDocument(InputStream input) {
 		try {
-			Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(input);
+			Document document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().parse(input);
 			return XmlStorageUtil.createCStorageTree(document);
 		} catch (Exception e) {
 			MakeCorePlugin.log(e);
 		}
 		return null;
diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/DiscoveredScannerInfoStore.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/DiscoveredScannerInfoStore.java
index 8d21940641..c8cc8d36b1 100644
--- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/DiscoveredScannerInfoStore.java
+++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/DiscoveredScannerInfoStore.java
@@ -23,19 +23,18 @@ import java.lang.ref.Reference;
 import java.lang.ref.SoftReference;
 import java.util.HashMap;
 import java.util.Map;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.cdt.make.core.MakeCorePlugin;
 import org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredScannerInfoSerializable;
 import org.eclipse.cdt.make.core.scannerconfig.InfoContext;
 import org.eclipse.cdt.make.internal.core.MakeMessages;
 import org.eclipse.cdt.make.internal.core.scannerconfig2.PerProjectSICollector;
@@ -157,11 +156,11 @@ public final class DiscoveredScannerInfoStore {
 		// Get the document
 		Reference<Document> ref = fDocumentCache.get(project);
 		Document document = ref != null ? ref.get() : null;
 		if (document == null) {
 			try {
-				DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+				DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 				IPath path = getDiscoveredScannerConfigStore(project);
 				if (path.toFile().exists()) {
 					// read form file
 					FileInputStream file = new FileInputStream(path.toFile());
 					document = builder.parse(file);
@@ -290,11 +289,12 @@ public final class DiscoveredScannerInfoStore {
 		try {
 			saveDiscoveredScannerInfo(context, serializable, document);
 
 			// Transform the document to something we can save in a file
 			ByteArrayOutputStream stream = new ByteArrayOutputStream();
-			Transformer transformer = TransformerFactory.newInstance().newTransformer();
+			Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
+					.newTransformer();
 			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
 			DOMSource source = new DOMSource(document);
 			StreamResult result = new StreamResult(stream);
diff --git a/build/org.eclipse.cdt.managedbuilder.core/META-INF/MANIFEST.MF b/build/org.eclipse.cdt.managedbuilder.core/META-INF/MANIFEST.MF
index ee41ef55a1..ee9274b6cf 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/META-INF/MANIFEST.MF
+++ b/build/org.eclipse.cdt.managedbuilder.core/META-INF/MANIFEST.MF
@@ -31,11 +31,11 @@ Export-Package: org.eclipse.cdt.build.core.scannerconfig,
  org.eclipse.cdt.managedbuilder.scannerconfig,
  org.eclipse.cdt.managedbuilder.tcmodification;x-friends:="org.eclipse.cdt.managedbuilder.ui,org.eclipse.cdt.managedbuilder.core.tests",
  org.eclipse.cdt.managedbuilder.templateengine,
  org.eclipse.cdt.managedbuilder.templateengine.processes,
  org.eclipse.cdt.newmake.core
-Require-Bundle: org.eclipse.cdt.core;bundle-version="[8.0.0,9.0.0)",
+Require-Bundle: org.eclipse.cdt.core;bundle-version="[8.3.0,9.0.0)",
  org.eclipse.core.resources;bundle-version="[3.14.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.core.variables;bundle-version="[3.1.100,4.0.0)",
  org.eclipse.cdt.make.core;visibility:=reexport,
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java
index 0b30d850a5..f6fffda1eb 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java
@@ -36,18 +36,16 @@ import java.util.Random;
 import java.util.Set;
 import java.util.SortedMap;
 import java.util.TreeMap;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.FactoryConfigurationError;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerConfigurationException;
 import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.TransformerFactoryConfigurationError;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.eclipse.cdt.core.AbstractCExtension;
@@ -65,10 +63,11 @@ import org.eclipse.cdt.core.settings.model.ICMultiConfigDescription;
 import org.eclipse.cdt.core.settings.model.ICProjectDescription;
 import org.eclipse.cdt.core.settings.model.ICProjectDescriptionManager;
 import org.eclipse.cdt.core.settings.model.ICSettingEntry;
 import org.eclipse.cdt.core.settings.model.XmlStorageUtil;
 import org.eclipse.cdt.core.settings.model.extension.CConfigurationData;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.cdt.managedbuilder.buildproperties.IBuildProperty;
 import org.eclipse.cdt.managedbuilder.buildproperties.IBuildPropertyManager;
 import org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableProvider;
 import org.eclipse.cdt.managedbuilder.internal.buildproperties.BuildPropertyManager;
 import org.eclipse.cdt.managedbuilder.internal.core.BooleanExpressionApplicabilityCalculator;
@@ -1087,11 +1086,11 @@ public class ManagedBuildManager extends AbstractCExtension {
 
 	public static boolean saveBuildInfoLegacy(IProject project, boolean force) {
 		// Create document
 		Exception err = null;
 		try {
-			DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document doc = builder.newDocument();
 
 			// Get the build information for the project
 			ManagedBuildInfo buildInfo = (ManagedBuildInfo) getBuildInfo(project);
 
@@ -1109,11 +1108,12 @@ public class ManagedBuildManager extends AbstractCExtension {
 				doc.appendChild(rootElement);
 				buildInfo.serializeLegacy(doc, rootElement);
 
 				// Transform the document to something we can save in a file
 				ByteArrayOutputStream stream = new ByteArrayOutputStream();
-				Transformer transformer = TransformerFactory.newInstance().newTransformer();
+				Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
+						.newTransformer();
 				transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 				transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); //$NON-NLS-1$
 				transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
 				DOMSource source = new DOMSource(doc);
 				StreamResult result = new StreamResult(stream);
@@ -1259,11 +1259,11 @@ public class ManagedBuildManager extends AbstractCExtension {
 		return true;
 		/*
 		// Create document
 		Exception err = null;
 		try {
-			DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document doc = builder.newDocument();
 
 			// Get the build information for the project
 			ManagedBuildInfo buildInfo = (ManagedBuildInfo) getBuildInfo(project);
 
@@ -1282,11 +1282,11 @@ public class ManagedBuildManager extends AbstractCExtension {
 				doc.appendChild(rootElement);
 				buildInfo.serialize(doc, rootElement);
 
 				// Transform the document to something we can save in a file
 				ByteArrayOutputStream stream = new ByteArrayOutputStream();
-				Transformer transformer = TransformerFactory.newInstance().newTransformer();
+				Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE().newTransformer();
 				transformer.setOutputProperty(OutputKeys.METHOD, "xml");	//$NON-NLS-1$
 				transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); //$NON-NLS-1$
 				transformer.setOutputProperty(OutputKeys.INDENT, "yes");	//$NON-NLS-1$
 				DOMSource source = new DOMSource(doc);
 				StreamResult result = new StreamResult(stream);
@@ -1834,11 +1834,11 @@ public class ManagedBuildManager extends AbstractCExtension {
 			throw new BuildException(ManagedMakeMessages.getFormattedString(PROJECT_FILE_ERROR, project.getName()));
 		}
 
 		// So there is a project file, load the information there
 		try (InputStream stream = new FileInputStream(cdtbuild)) {
-			DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			DocumentBuilder parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document document = parser.parse(stream);
 			String fileVersion = null;
 
 			// Get the first element in the project file
 			Node rootElement = document.getFirstChild();
@@ -2514,11 +2514,11 @@ public class ManagedBuildManager extends AbstractCExtension {
 		//		}
 		//		IFile file = project.getFile(SETTINGS_FILE_NAME);
 		//		if (file.exists()) {
 		//			try {
 		//				InputStream stream = file.getContents();
-		//				DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+		//				DocumentBuilder parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 		//				Document document = parser.parse(stream);
 		//				NodeList nodes = document.getElementsByTagName(ROOT_NODE_NAME);
 		//				return (nodes.getLength() > 0);
 		//			} catch (Exception e) {
 		//				return false;
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject12.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject12.java
index 3a0683862b..40044b0c74 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject12.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject12.java
@@ -21,12 +21,12 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Vector;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.cdt.managedbuilder.core.BuildException;
 import org.eclipse.cdt.managedbuilder.core.IBuildObject;
 import org.eclipse.cdt.managedbuilder.core.IConfiguration;
 import org.eclipse.cdt.managedbuilder.core.IConfigurationV2;
 import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
@@ -707,11 +707,11 @@ class UpdateManagedProject12 {
 
 		//Now convert each target to the new format
 		try {
 			// Load the old build file
 			InputStream stream = new FileInputStream(settingsFile);
-			DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			DocumentBuilder parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document document = parser.parse(stream);
 
 			// Clone the target based on the proper target definition
 			NodeList targetNodes = document.getElementsByTagName(ITarget.TARGET_ELEMENT_NAME);
 			// This is a guess, but typically the project has 1 target, 2 configs, and 6 tool defs
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject20.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject20.java
index be4db6fe38..1d7faa749c 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject20.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/projectconverter/UpdateManagedProject20.java
@@ -17,12 +17,12 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
 import java.util.Vector;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.cdt.managedbuilder.core.BuildException;
 import org.eclipse.cdt.managedbuilder.core.IBuilder;
 import org.eclipse.cdt.managedbuilder.core.IConfiguration;
 import org.eclipse.cdt.managedbuilder.core.IConfigurationV2;
 import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
@@ -76,11 +76,11 @@ class UpdateManagedProject20 {
 		UpdateManagedProjectManager.backupFile(file, "_20backup", monitor, project); //$NON-NLS-1$
 
 		try {
 			// Load the old build file
 			InputStream stream = new FileInputStream(settingsFile);
-			DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			DocumentBuilder parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document document = parser.parse(stream);
 
 			// Clone the target based on the proper target definition
 			NodeList targetNodes = document.getElementsByTagName(ITarget.TARGET_ELEMENT_NAME);
 			// This is a guess, but typically the project has 1 target, 2 configs, and 6 tool defs
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/XMLDumper.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/XMLDumper.java
index 7d3dc6e111..4aa59bac8c 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/XMLDumper.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/XMLDumper.java
@@ -17,18 +17,17 @@ import java.io.StringWriter;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.util.HashMap;
 
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
 /**
  * This class implements a utility that will walk through an object
@@ -51,11 +50,12 @@ public class XMLDumper {
 		try {
 			XMLDumper dumper = new XMLDumper(test);
 			Document document = dumper.getDocument();
 			StringWriter writer = new StringWriter();
 
-			Transformer transformer = TransformerFactory.newInstance().newTransformer();
+			Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
+					.newTransformer();
 			transformer.transform(new DOMSource(document), new StreamResult(writer));
 
 			System.out.println("STRXML = " + writer.toString()); //Spit out DOM as a String //$NON-NLS-1$
 		} catch (TransformerException e) {
 			e.printStackTrace();
@@ -72,11 +72,11 @@ public class XMLDumper {
 	public Document getDocument() {
 		return document;
 	}
 
 	public XMLDumper(Object obj) throws ParserConfigurationException {
-		document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+		document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().newDocument();
 		document.appendChild(createObject(obj));
 	}
 
 	private Element createObject(Object obj) {
 		Class cls = obj.getClass();
diff --git a/core/org.eclipse.cdt.core/META-INF/MANIFEST.MF b/core/org.eclipse.cdt.core/META-INF/MANIFEST.MF
index 8d1303efaa..d3c9947083 100644
--- a/core/org.eclipse.cdt.core/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.cdt.core/META-INF/MANIFEST.MF
@@ -53,11 +53,20 @@ Export-Package: org.eclipse.cdt.core,
    org.eclipse.cdt.dsf.gdb,
    org.eclipse.cdt.make.core,
    org.eclipse.cdt.make.ui,
    org.eclipse.cdt.managedbuilder.core,
    org.eclipse.cdt.managedbuilder.ui,
-   org.eclipse.cdt.ui",
+   org.eclipse.cdt.ui,
+   org.eclipse.cdt.autotools.core,
+   org.eclipse.cdt.autotools.tests,
+   org.eclipse.cdt.autotools.ui,
+   org.eclipse.cdt.autotools.ui.tests,
+   org.eclipse.cdt.core.tests,
+   org.eclipse.cdt.debug.ui,
+   org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui,
+   org.eclipse.cdt.testsrunner.boost,
+   org.eclipse.cdt.testsrunner.qttest",
  org.eclipse.cdt.internal.core.browser;x-friends:="org.eclipse.cdt.ui",
  org.eclipse.cdt.internal.core.cdtvariables;x-internal:=true,
  org.eclipse.cdt.internal.core.dom;x-internal:=true,
  org.eclipse.cdt.internal.core.dom.ast.tag;x-internal:=true,
  org.eclipse.cdt.internal.core.dom.parser;x-friends:="org.eclipse.cdt.ui,org.eclipse.cdt.codan.checkers",
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/LanguageMappingStore.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/LanguageMappingStore.java
index 2d61d250bf..6da0b75442 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/LanguageMappingStore.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/LanguageMappingStore.java
@@ -21,16 +21,14 @@ import java.io.StringWriter;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.TreeMap;
 
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerConfigurationException;
 import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.TransformerFactoryConfigurationError;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.eclipse.cdt.core.CCorePlugin;
@@ -39,10 +37,11 @@ import org.eclipse.cdt.core.language.ProjectLanguageConfiguration;
 import org.eclipse.cdt.core.language.WorkspaceLanguageConfiguration;
 import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
 import org.eclipse.cdt.core.settings.model.ICProjectDescription;
 import org.eclipse.cdt.core.settings.model.ICStorageElement;
 import org.eclipse.cdt.internal.core.Util;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.preferences.DefaultScope;
 import org.eclipse.core.runtime.preferences.IEclipsePreferences;
 import org.eclipse.core.runtime.preferences.InstanceScope;
@@ -192,11 +191,11 @@ public class LanguageMappingStore {
 	}
 
 	public void storeMappings(WorkspaceLanguageConfiguration config) throws CoreException {
 		try {
 			// Encode mappings as XML and serialize as a String.
-			Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+			Document doc = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().newDocument();
 			Element rootElement = doc.createElement(WORKSPACE_MAPPINGS);
 			doc.appendChild(rootElement);
 			addContentTypeMappings(config.getWorkspaceMappings(), rootElement);
 			Transformer serializer = createSerializer();
 			DOMSource source = new DOMSource(doc);
@@ -231,11 +230,11 @@ public class LanguageMappingStore {
 		}
 
 		// The mappings are encoded as XML in a String so we need to parse it.
 		InputSource input = new InputSource(new StringReader(encodedMappings));
 		try {
-			Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(input);
+			Document document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().parse(input);
 			config.setWorkspaceMappings(decodeContentTypeMappings(document.getDocumentElement()));
 			return config;
 		} catch (SAXException e) {
 			throw new CoreException(Util.createStatus(e));
 		} catch (IOException e) {
@@ -245,11 +244,11 @@ public class LanguageMappingStore {
 		}
 	}
 
 	private Transformer createSerializer() throws CoreException {
 		try {
-			return TransformerFactory.newInstance().newTransformer();
+			return XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE().newTransformer();
 		} catch (TransformerConfigurationException e) {
 			throw new CoreException(Util.createStatus(e));
 		} catch (TransformerFactoryConfigurationError e) {
 			throw new CoreException(Util.createStatus(e));
 		}
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java
index c566cb899c..ff79da4909 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java
@@ -43,18 +43,16 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.CopyOnWriteArraySet;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.FactoryConfigurationError;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerConfigurationException;
 import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.eclipse.cdt.core.CCorePlugin;
 import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider;
@@ -96,10 +94,11 @@ import org.eclipse.cdt.core.settings.model.util.CDataUtil;
 import org.eclipse.cdt.core.settings.model.util.KindBasedStore;
 import org.eclipse.cdt.core.settings.model.util.ListComparator;
 import org.eclipse.cdt.core.settings.model.util.PathSettingsContainer;
 import org.eclipse.cdt.core.settings.model.util.PatternNameMap;
 import org.eclipse.cdt.internal.core.CConfigBasedDescriptorManager;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.cdt.internal.core.model.CElementDelta;
 import org.eclipse.cdt.internal.core.settings.model.CExternalSettinsDeltaCalculator.ExtSettingsDelta;
 import org.eclipse.cdt.internal.core.settings.model.xml.InternalXmlStorageElement;
 import org.eclipse.cdt.internal.core.settings.model.xml.XmlStorage;
 import org.eclipse.core.filesystem.EFS;
@@ -916,11 +915,12 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
 
 		// Transform the document to something we can save in a file
 		ByteArrayOutputStream stream = new ByteArrayOutputStream();
 		FileOutputStream fileStream = null;
 		try {
-			Transformer transformer = TransformerFactory.newInstance().newTransformer();
+			Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
+					.newTransformer();
 			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
 			DOMSource source = new DOMSource(doc);
 			StreamResult result = new StreamResult(stream);
@@ -1232,11 +1232,11 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager {
 	*/
 
 	public ICStorageElement createPreferenceStorage(String key, boolean createEmptyIfNotFound, boolean readOnly)
 			throws CoreException {
 		try {
-			DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document doc = null;
 			Element element = null;
 			InputStream stream = null;
 
 			try {
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionStorageManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionStorageManager.java
index 8636b6030f..d858029689 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionStorageManager.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionStorageManager.java
@@ -25,24 +25,23 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerConfigurationException;
 import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.TransformerFactoryConfigurationError;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.eclipse.cdt.core.CCorePlugin;
 import org.eclipse.cdt.core.settings.model.ICProjectDescription;
 import org.eclipse.cdt.internal.core.CConfigBasedDescriptorManager;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.cdt.internal.core.XmlUtil;
 import org.eclipse.cdt.internal.core.settings.model.ICProjectDescriptionStorageType.CProjectDescriptionStorageTypeProxy;
 import org.eclipse.cdt.internal.core.settings.model.xml.XmlProjectDescriptionStorage;
 import org.eclipse.cdt.internal.core.settings.model.xml2.XmlProjectDescriptionStorage2;
 import org.eclipse.core.filesystem.EFS;
@@ -65,10 +64,11 @@ import org.osgi.framework.Version;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 import org.w3c.dom.ProcessingInstruction;
+import org.xml.sax.SAXException;
 
 /**
  * Class that marshals creation of AbstractCProjectDescriptionStorages
  * for a given project.
  *
@@ -161,11 +161,11 @@ public class CProjectDescriptionStorageManager {
 	 */
 	private void writeProjectStorageType(IProject project, CProjectDescriptionStorageTypeProxy type)
 			throws CoreException {
 		Document doc;
 		try {
-			doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+			doc = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().newDocument();
 			// Set the version
 			ProcessingInstruction instruction = doc.createProcessingInstruction(
 					ICProjectDescriptionStorageType.STORAGE_VERSION_NAME, type.version.toString());
 			doc.appendChild(instruction);
 			// Set the type id
@@ -173,11 +173,12 @@ public class CProjectDescriptionStorageManager {
 			el.setAttribute(ICProjectDescriptionStorageType.STORAGE_TYPE_ATTRIBUTE, type.id);
 			doc.appendChild(el);
 			XmlUtil.prettyFormat(doc);
 
 			ByteArrayOutputStream stream = new ByteArrayOutputStream();
-			Transformer transformer = TransformerFactory.newInstance().newTransformer();
+			Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
+					.newTransformer();
 			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); //$NON-NLS-1$
 			// Indentation is done with XmlUtil.prettyFormat(doc)
 			transformer.setOutputProperty(OutputKeys.INDENT, "no"); //$NON-NLS-1$
 			DOMSource source = new DOMSource(doc);
@@ -220,11 +221,11 @@ public class CProjectDescriptionStorageManager {
 		Version version = DEFAULT_STORAGE_VERSION;
 		String storageTypeID = DEFAULT_STORAGE_TYPE;
 
 		InputStream stream = null;
 		try {
-			DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			stream = getInputStreamForIFile(project, ICProjectDescriptionStorageType.STORAGE_FILE_NAME);
 			if (stream != null) {
 				Document doc = builder.parse(stream);
 				// Get the first element in the project file
 				Node rootElement = doc.getFirstChild();
@@ -350,11 +351,11 @@ public class CProjectDescriptionStorageManager {
 			for (IConfigurationElement configEl : extension.getConfigurationElements()) {
 				if (configEl.getName().equalsIgnoreCase(CPROJ_STORAGE_TYPE)) {
 					CProjectDescriptionStorageTypeProxy type = initStorageType(configEl);
 					if (type != null) {
 						if (!m.containsKey(type.id))
-							m.put(type.id, new LinkedList<CProjectDescriptionStorageTypeProxy>());
+							m.put(type.id, new LinkedList<>());
 						m.get(type.id).add(type);
 					}
 				}
 			}
 		}
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlProjectDescriptionStorage.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlProjectDescriptionStorage.java
index a6df97cb85..8a0c98eaff 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlProjectDescriptionStorage.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlProjectDescriptionStorage.java
@@ -24,28 +24,27 @@ import java.io.InputStream;
 import java.lang.ref.Reference;
 import java.lang.ref.SoftReference;
 import java.net.URI;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.FactoryConfigurationError;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerConfigurationException;
 import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.eclipse.cdt.core.CCorePlugin;
 import org.eclipse.cdt.core.settings.model.ICProjectDescription;
 import org.eclipse.cdt.core.settings.model.ICProjectDescriptionManager;
 import org.eclipse.cdt.core.settings.model.ICSettingsStorage;
 import org.eclipse.cdt.core.settings.model.ICStorageElement;
 import org.eclipse.cdt.core.settings.model.extension.ICProjectConverter;
 import org.eclipse.cdt.core.settings.model.util.CDataUtil;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.cdt.internal.core.XmlUtil;
 import org.eclipse.cdt.internal.core.envvar.ContributedEnvironment;
 import org.eclipse.cdt.internal.core.language.settings.providers.LanguageSettingsProvidersSerializer;
 import org.eclipse.cdt.internal.core.model.Util;
 import org.eclipse.cdt.internal.core.settings.model.AbstractCProjectDescriptionStorage;
@@ -541,11 +540,12 @@ public class XmlProjectDescriptionStorage extends AbstractCProjectDescriptionSto
 		Document doc = ((InternalXmlStorageElement) element).fElement.getOwnerDocument();
 		XmlUtil.prettyFormat(doc);
 
 		ByteArrayOutputStream stream = new ByteArrayOutputStream();
 		try {
-			Transformer transformer = TransformerFactory.newInstance().newTransformer();
+			Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
+					.newTransformer();
 			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); //$NON-NLS-1$
 			// Indentation is done with XmlUtil.prettyFormat(doc)
 			transformer.setOutputProperty(OutputKeys.INDENT, "no"); //$NON-NLS-1$
 			DOMSource source = new DOMSource(doc);
@@ -630,11 +630,11 @@ public class XmlProjectDescriptionStorage extends AbstractCProjectDescriptionSto
 	}
 
 	private ICStorageElement readOldCDTProjectFile(IProject project) throws CoreException {
 		ICStorageElement storage = null;
 		try {
-			DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document doc = null;
 			InputStream stream = getSharedProperty(project, OLD_CDTPROJECT_FILE_NAME);
 			if (stream != null) {
 				doc = builder.parse(stream);
 				NodeList nodeList = doc.getElementsByTagName(OLD_PROJECT_DESCRIPTION);
@@ -667,11 +667,11 @@ public class XmlProjectDescriptionStorage extends AbstractCProjectDescriptionSto
 	 * @throws CoreException
 	 */
 	protected InternalXmlStorageElement createStorage(IContainer container, String fileName, boolean reCreate,
 			boolean createEmptyIfNotFound, boolean readOnly) throws CoreException {
 		try {
-			DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document doc = null;
 			Element element = null;
 			InputStream stream = null;
 			if (reCreate) {
 				try {
@@ -849,11 +849,11 @@ public class XmlProjectDescriptionStorage extends AbstractCProjectDescriptionSto
 	 * @return Xml element based on a passed in xml ICStorageElement (InternalXmlStorageElement)
 	 * @throws CoreException
 	 */
 	public Element createXmlElementCopy(InternalXmlStorageElement el) throws CoreException {
 		try {
-			DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document doc = builder.newDocument();
 			Element newXmlEl = null;
 			synchronized (doc) {
 				synchronized (el.fLock) {
 					if (el.fElement.getParentNode().getNodeType() == Node.DOCUMENT_NODE) {
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlStorageElement.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlStorageElement.java
index 47941d136b..67e760ef4e 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlStorageElement.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/xml/XmlStorageElement.java
@@ -20,21 +20,20 @@ import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.FactoryConfigurationError;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.eclipse.cdt.core.settings.model.ICSettingsStorage;
 import org.eclipse.cdt.core.settings.model.ICStorageElement;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.cdt.internal.core.settings.model.ExceptionFactory;
 import org.eclipse.core.runtime.CoreException;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.NamedNodeMap;
@@ -460,11 +459,11 @@ public class XmlStorageElement implements ICStorageElement {
 	protected Element createXmlElementCopy() throws CoreException {
 
 		try {
 			synchronized (fLock) {
 				Element newXmlEl = null;
-				DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+				DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 				Document doc = builder.newDocument();
 				synchronized (doc) {
 					if (fElement.getParentNode().getNodeType() == Node.DOCUMENT_NODE) {
 						Document baseDoc = fElement.getOwnerDocument();
 						NodeList list = baseDoc.getChildNodes();
@@ -511,11 +510,12 @@ public class XmlStorageElement implements ICStorageElement {
 	public String toString() {
 		StringBuilder builder = new StringBuilder();
 		synchronized (fLock) {
 			try {
 				ByteArrayOutputStream stream = new ByteArrayOutputStream();
-				Transformer transformer = TransformerFactory.newInstance().newTransformer();
+				Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
+						.newTransformer();
 				// Indentation is done with XmlUtil.prettyFormat(doc).
 				// For debugging, the prettyFormat may not have been run yet,
 				// so turning this to "yes" may be helpful on occasion.
 				transformer.setOutputProperty(OutputKeys.INDENT, "no"); //$NON-NLS-1$
 
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/UserDefinedVariableSupplier.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/UserDefinedVariableSupplier.java
index 92268fd5fa..db9b5472f7 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/UserDefinedVariableSupplier.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/cdtvariables/UserDefinedVariableSupplier.java
@@ -23,24 +23,23 @@ import java.util.Collections;
 import java.util.HashSet;
 import java.util.Objects;
 import java.util.Set;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerConfigurationException;
 import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.eclipse.cdt.core.CCorePlugin;
 import org.eclipse.cdt.core.cdtvariables.CdtVariableException;
 import org.eclipse.cdt.core.cdtvariables.ICdtVariable;
 import org.eclipse.cdt.core.settings.model.ICStorageElement;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.cdt.internal.core.settings.model.CConfigurationSpecSettings;
 import org.eclipse.cdt.internal.core.settings.model.ExceptionFactory;
 import org.eclipse.cdt.internal.core.settings.model.IInternalCCfgInfo;
 import org.eclipse.cdt.internal.core.settings.model.xml.XmlStorageElement;
 import org.eclipse.cdt.utils.cdtvariables.CdtVariableResolver;
@@ -92,11 +91,11 @@ public class UserDefinedVariableSupplier extends CoreMacroSupplierBase {
 
 		return macros;
 	}
 
 	private UserDefinedVariableSupplier() {
-		fListeners = Collections.synchronizedSet(new HashSet<ICdtVariableChangeListener>());
+		fListeners = Collections.synchronizedSet(new HashSet<>());
 	}
 
 	public static UserDefinedVariableSupplier getInstance() {
 		if (fInstance == null)
 			fInstance = getInstanceSynch();
@@ -530,11 +529,11 @@ public class UserDefinedVariableSupplier extends CoreMacroSupplierBase {
 		storeOutputStream(stream, getWorkspaceNode(), PREFNAME_WORKSPACE);
 	}
 
 	private StorableCdtVariables loadMacrosFromStream(InputStream stream, boolean readOnly) {
 		try {
-			DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			DocumentBuilder parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			InputSource inputSource = new InputSource(stream);
 			Document document = parser.parse(inputSource);
 			Element rootElement = document.getDocumentElement();
 
 			if (!StorableCdtVariables.MACROS_ELEMENT_NAME.equals(rootElement.getNodeName()))
@@ -552,20 +551,20 @@ public class UserDefinedVariableSupplier extends CoreMacroSupplierBase {
 		return null;
 	}
 
 	private ByteArrayOutputStream storeMacrosToStream(StorableCdtVariables macros) throws CoreException {
 		try {
-			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-			DocumentBuilder builder = factory.newDocumentBuilder();
+			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document document = builder.newDocument();
 
 			Element rootElement = document.createElement(StorableCdtVariables.MACROS_ELEMENT_NAME);
 			document.appendChild(rootElement);
 			ICStorageElement storageElement = new XmlStorageElement(rootElement);
 			macros.serialize(storageElement);
 
-			Transformer transformer = TransformerFactory.newInstance().newTransformer();
+			Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
+					.newTransformer();
 			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
 			DOMSource source = new DOMSource(document);
 
diff --git a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/SharedDefaults.java b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/SharedDefaults.java
index aed2d2650c..b5408c3aac 100644
--- a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/SharedDefaults.java
+++ b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/SharedDefaults.java
@@ -18,19 +18,19 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.Result;
 import javax.xml.transform.TransformerConfigurationException;
 import javax.xml.transform.TransformerException;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
 /**
@@ -124,11 +124,11 @@ public class SharedDefaults extends HashMap<String, String> {
 			long length = parsedXML.length();
 			// Adds defaultXML format if the file length is zero
 			if (length == 0) {
 				parsedXML = createDefaultXMLFormat(parsedXML);
 			}
-			document = DocumentBuilderFactory.newInstance().newDocumentBuilder()
+			document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE()
 					.parse(parsedXML.toURI().toURL().openStream());
 		} catch (Exception exp) {
 			TemplateEngineUtil.log(exp);
 		}
 
@@ -196,11 +196,11 @@ public class SharedDefaults extends HashMap<String, String> {
 	 * @param updateName
 	 * @param updateValue
 	 */
 	public void updateToBackEndStorage(String updateName, String updateValue) {
 		try {
-			document = DocumentBuilderFactory.newInstance().newDocumentBuilder()
+			document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE()
 					.parse(parsedXML.toURI().toURL().openStream());
 		} catch (Exception exp) {
 			TemplateEngineUtil.log(exp);
 		}
 
@@ -225,11 +225,11 @@ public class SharedDefaults extends HashMap<String, String> {
 	 *
 	 * @param deleteName
 	 */
 	public void deleteBackEndStorage(String[] deleteName) {
 		try {
-			document = DocumentBuilderFactory.newInstance().newDocumentBuilder()
+			document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE()
 					.parse(parsedXML.toURI().toURL().openStream());
 		} catch (Exception exp) {
 			TemplateEngineUtil.log(exp);
 		}
 
@@ -259,22 +259,22 @@ public class SharedDefaults extends HashMap<String, String> {
 	 */
 
 	private File createDefaultXMLFormat(File xmlFile) {
 		Document d;
 		try {
-			d = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+			d = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().newDocument();
 		} catch (ParserConfigurationException e) {
 			TemplateEngineUtil.log(e);
 			return xmlFile;
 		}
 		Node rootElement = d.appendChild(d.createElement("SharedRoot")); //$NON-NLS-1$
 		Element element = (Element) rootElement.appendChild(d.createElement("SharedProperty")); //$NON-NLS-1$
 		element.setAttribute(TemplateEngineHelper.ID, ""); //$NON-NLS-1$
 		element.setAttribute(TemplateEngineHelper.VALUE, ""); //$NON-NLS-1$
 
 		DOMSource domSource = new DOMSource(d);
-		TransformerFactory transFactory = TransformerFactory.newInstance();
+		TransformerFactory transFactory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
 
 		try {
 			FileOutputStream fos = null;
 			try {
 				fos = new FileOutputStream(xmlFile);
@@ -301,11 +301,11 @@ public class SharedDefaults extends HashMap<String, String> {
 	 */
 
 	private void generateSharedXML(File xmlFile) {
 		Document d;
 		try {
-			d = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+			d = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().newDocument();
 		} catch (ParserConfigurationException e) {
 			TemplateEngineUtil.log(e);
 			return;
 		}
 		Node rootElement = d.appendChild(d.createElement("SharedRoot")); //$NON-NLS-1$
@@ -315,11 +315,11 @@ public class SharedDefaults extends HashMap<String, String> {
 			element.setAttribute(TemplateEngineHelper.ID, key);
 			element.setAttribute(TemplateEngineHelper.VALUE, sharedDefaultsMap.get(key));
 		}
 
 		DOMSource domSource = new DOMSource(d);
-		TransformerFactory transFactory = TransformerFactory.newInstance();
+		TransformerFactory transFactory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
 		Result fileResult = new StreamResult(xmlFile);
 		try {
 			transFactory.newTransformer().transform(domSource, fileResult);
 		} catch (Throwable t) {
 			TemplateEngineUtil.log(t);
diff --git a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateDescriptor.java b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateDescriptor.java
index f8a709f1dc..82bbf3879e 100644
--- a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateDescriptor.java
+++ b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateDescriptor.java
@@ -18,13 +18,13 @@ import java.net.URL;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.osgi.util.NLS;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.xml.sax.SAXException;
 
@@ -52,11 +52,12 @@ public class TemplateDescriptor {
 	 * @throws TemplateInitializationException
 	 */
 	public TemplateDescriptor(URL descriptorURL, String pluginId) throws TemplateInitializationException {
 		String msg = NLS.bind(Messages.TemplateCore_init_failed, descriptorURL.toString());
 		try {
-			this.document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(descriptorURL.openStream());
+			this.document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE()
+					.parse(descriptorURL.openStream());
 		} catch (ParserConfigurationException pce) {
 			throw new TemplateInitializationException(msg, pce);
 		} catch (IOException ioe) {
 			throw new TemplateInitializationException(msg, ioe);
 		} catch (SAXException se) {
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/XmlProcessorFactoryCdt.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/XmlProcessorFactoryCdt.java
new file mode 100644
index 0000000000..0e75380603
--- /dev/null
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/XmlProcessorFactoryCdt.java
@@ -0,0 +1,189 @@
+/*******************************************************************************
+ *  Copyright (c) 2023 Joerg Kubitz and others.
+ *
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.internal.core;
+
+import javax.xml.XMLConstants;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import javax.xml.transform.TransformerFactory;
+
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXNotRecognizedException;
+import org.xml.sax.SAXNotSupportedException;
+
+/**
+ * XML processing which prohibits external entities.
+ *
+ * Copied from https://github.com/eclipse-jdt/eclipse.jdt.debug/blob/1d59af8a6a37f9cf8143d73d94e4c1c3555363d6/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/XmlProcessorFactoryJdtDebug.java
+ *
+ * @see <a href="https://rules.sonarsource.com/java/RSPEC-2755/">RSPEC-2755</a>
+ */
+public class XmlProcessorFactoryCdt {
+	private XmlProcessorFactoryCdt() {
+		// static Utility only
+	}
+
+	private static final DocumentBuilderFactory DOCUMENT_BUILDER_FACTORY_ERROR_ON_DOCTYPE = createDocumentBuilderFactoryWithErrorOnDOCTYPE();
+	private static final DocumentBuilderFactory DOCUMENT_BUILDER_FACTORY_IGNORING_DOCTYPE = createDocumentBuilderFactoryIgnoringDOCTYPE();
+	private static final SAXParserFactory SAX_FACTORY_ERROR_ON_DOCTYPE = createSAXFactoryWithErrorOnDOCTYPE(false);
+	private static final SAXParserFactory SAX_FACTORY_ERROR_ON_DOCTYPE_NS = createSAXFactoryWithErrorOnDOCTYPE(true);
+	private static final SAXParserFactory SAX_FACTORY_IGNORING_DOCTYPE = createSAXFactoryIgnoringDOCTYPE();
+
+	/**
+	 * Creates TransformerFactory which throws TransformerException when detecting external entities.
+	 *
+	 * @return javax.xml.transform.TransformerFactory
+	 */
+	public static TransformerFactory createTransformerFactoryWithErrorOnDOCTYPE() {
+		TransformerFactory factory = TransformerFactory.newInstance();
+		// prohibit the use of all protocols by external entities:
+		factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); //$NON-NLS-1$
+		factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, ""); //$NON-NLS-1$
+		return factory;
+	}
+
+	/**
+	 * Creates DocumentBuilderFactory which throws SAXParseException when detecting external entities. It's magnitudes faster to call
+	 * {@link #createDocumentBuilderWithErrorOnDOCTYPE()}.
+	 *
+	 * @return javax.xml.parsers.DocumentBuilderFactory
+	 */
+	public static synchronized DocumentBuilderFactory createDocumentBuilderFactoryWithErrorOnDOCTYPE() {
+		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+		// completely disable DOCTYPE declaration:
+		try {
+			factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); //$NON-NLS-1$
+		} catch (ParserConfigurationException e) {
+			throw new RuntimeException(e.getMessage(), e);
+		}
+		return factory;
+	}
+
+	/**
+	 * Creates DocumentBuilderFactory which ignores external entities. It's magnitudes faster to call {@link #createDocumentBuilderIgnoringDOCTYPE()}.
+	 *
+	 * @return javax.xml.parsers.DocumentBuilderFactory
+	 */
+	public static synchronized DocumentBuilderFactory createDocumentBuilderFactoryIgnoringDOCTYPE() {
+		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+		try {
+			// completely disable external entities declarations:
+			factory.setFeature("http://xml.org/sax/features/external-general-entities", false); //$NON-NLS-1$
+			factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); //$NON-NLS-1$
+		} catch (ParserConfigurationException e) {
+			throw new RuntimeException(e.getMessage(), e);
+		}
+		return factory;
+	}
+
+	/**
+	 * Creates DocumentBuilder which throws SAXParseException when detecting external entities. The builder is not thread safe.
+	 *
+	 * @return javax.xml.parsers.DocumentBuilder
+	 * @throws ParserConfigurationException
+	 */
+	public static DocumentBuilder createDocumentBuilderWithErrorOnDOCTYPE() throws ParserConfigurationException {
+		return DOCUMENT_BUILDER_FACTORY_ERROR_ON_DOCTYPE.newDocumentBuilder();
+	}
+
+	/**
+	 * Creates DocumentBuilder which ignores external entities. The builder is not thread safe.
+	 *
+	 * @return javax.xml.parsers.DocumentBuilder
+	 * @throws ParserConfigurationException
+	 */
+	public static DocumentBuilder createDocumentBuilderIgnoringDOCTYPE() throws ParserConfigurationException {
+		return DOCUMENT_BUILDER_FACTORY_IGNORING_DOCTYPE.newDocumentBuilder();
+	}
+
+	/**
+	 * Creates DocumentBuilderFactory which throws SAXParseException when detecting external entities.
+	 *
+	 * @return javax.xml.parsers.DocumentBuilderFactory
+	 */
+	public static SAXParserFactory createSAXFactoryWithErrorOnDOCTYPE() {
+		SAXParserFactory f = SAXParserFactory.newInstance();
+		try {
+			// force org.xml.sax.SAXParseException for any DOCTYPE:
+			f.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); //$NON-NLS-1$
+		} catch (Exception e) {
+			throw new RuntimeException(e);
+		}
+		return f;
+	}
+
+	private static synchronized SAXParserFactory createSAXFactoryWithErrorOnDOCTYPE(boolean awareness) {
+		SAXParserFactory f = SAXParserFactory.newInstance();
+		f.setNamespaceAware(awareness);
+		try {
+			// force org.xml.sax.SAXParseException for any DOCTYPE:
+			f.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); //$NON-NLS-1$
+		} catch (Exception e) {
+			throw new RuntimeException(e);
+		}
+		return f;
+	}
+
+	private static synchronized SAXParserFactory createSAXFactoryIgnoringDOCTYPE() {
+		SAXParserFactory f = SAXParserFactory.newInstance();
+		try {
+			// ignore DOCTYPE:
+			f.setFeature("http://xml.org/sax/features/external-general-entities", false); //$NON-NLS-1$
+			f.setFeature("http://xml.org/sax/features/external-parameter-entities", false); //$NON-NLS-1$
+			f.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); //$NON-NLS-1$
+		} catch (Exception e) {
+			throw new RuntimeException(e);
+		}
+		return f;
+	}
+
+	/**
+	 * Creates SAXParser which throws SAXParseException when detecting external entities.
+	 *
+	 * @return javax.xml.parsers.SAXParser
+	 */
+
+	public static SAXParser createSAXParserWithErrorOnDOCTYPE() throws ParserConfigurationException, SAXException {
+		return createSAXParserWithErrorOnDOCTYPE(false);
+	}
+
+	/**
+	 * Creates SAXParser which throws SAXParseException when detecting external entities.
+	 *
+	 * @param namespaceAware
+	 *            parameter for SAXParserFactory
+	 *
+	 * @return javax.xml.parsers.SAXParser
+	 */
+	public static SAXParser createSAXParserWithErrorOnDOCTYPE(boolean namespaceAware)
+			throws ParserConfigurationException, SAXException {
+		if (namespaceAware) {
+			return SAX_FACTORY_ERROR_ON_DOCTYPE_NS.newSAXParser();
+		}
+		return SAX_FACTORY_ERROR_ON_DOCTYPE.newSAXParser();
+	}
+
+	/**
+	 * Creates SAXParser which does not throw Exception when detecting external entities but ignores them.
+	 *
+	 * @return javax.xml.parsers.SAXParser
+	 */
+	public static SAXParser createSAXParserIgnoringDOCTYPE()
+			throws ParserConfigurationException, SAXNotRecognizedException, SAXNotSupportedException, SAXException {
+		SAXParser parser = SAX_FACTORY_IGNORING_DOCTYPE.newSAXParser();
+		parser.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, ""); //$NON-NLS-1$
+		parser.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, ""); //$NON-NLS-1$
+		return parser;
+	}
+}
\ No newline at end of file
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/XmlUtil.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/XmlUtil.java
index 5dda1e8c30..2bbcd815b0 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/XmlUtil.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/internal/core/XmlUtil.java
@@ -23,16 +23,14 @@ import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
 import java.net.URI;
 import java.util.Arrays;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.eclipse.cdt.core.CCorePlugin;
 import org.eclipse.cdt.core.resources.ResourcesUtil;
@@ -61,11 +59,11 @@ public class XmlUtil {
 	 *
 	 * @return a new instance of a DOM {@link Document}.
 	 * @throws ParserConfigurationException in case of a problem retrieving {@link DocumentBuilder}.
 	 */
 	public static Document newDocument() throws ParserConfigurationException {
-		DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+		DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 		return builder.newDocument();
 	}
 
 	/**
 	 * Convenience method to retrieve value of a node.
@@ -225,11 +223,11 @@ public class XmlUtil {
 	 * @return new loaded DOM Document.
 	 * @throws CoreException if something goes wrong.
 	 */
 	private static Document loadXml(InputStream xmlStream) throws CoreException {
 		try {
-			DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			return builder.parse(xmlStream);
 		} catch (Exception e) {
 			throw new CoreException(CCorePlugin.createStatus(Messages.XmlUtil_InternalErrorLoading, e));
 		}
 	}
@@ -368,11 +366,12 @@ public class XmlUtil {
 	 * @throws CoreException if something goes wrong.
 	 */
 	private static byte[] toByteArray(Document doc) throws CoreException {
 		try {
 			ByteArrayOutputStream stream = new ByteArrayOutputStream();
-			Transformer transformer = TransformerFactory.newInstance().newTransformer();
+			Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
+					.newTransformer();
 			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.ENCODING, ENCODING_UTF_8);
 			// Indentation is done with XmlUtil.prettyFormat(doc).
 			transformer.setOutputProperty(OutputKeys.INDENT, "no"); //$NON-NLS-1$
 			DOMSource source = new DOMSource(doc);
diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/envvar/StorableEnvironmentLoader.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/envvar/StorableEnvironmentLoader.java
index 0895ec976b..ba624801b0 100644
--- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/envvar/StorableEnvironmentLoader.java
+++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/envvar/StorableEnvironmentLoader.java
@@ -18,22 +18,21 @@ import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerConfigurationException;
 import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.eclipse.cdt.core.CCorePlugin;
 import org.eclipse.cdt.core.settings.model.ICStorageElement;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.cdt.internal.core.settings.model.xml.XmlStorageElement;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.preferences.IEclipsePreferences;
@@ -146,11 +145,11 @@ public abstract class StorableEnvironmentLoader {
 	 */
 	static ICStorageElement environmentStorageFromString(String env) {
 		if (env == null)
 			return null;
 		try {
-			DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			DocumentBuilder parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			InputSource inputSource = new InputSource(new ByteArrayInputStream(env.getBytes()));
 			Document document = parser.parse(inputSource);
 			Element el = document.getDocumentElement();
 			XmlStorageElement rootElement = new XmlStorageElement(el);
 
@@ -168,20 +167,20 @@ public abstract class StorableEnvironmentLoader {
 		return null;
 	}
 
 	private ByteArrayOutputStream storeEnvironmentToStream(StorableEnvironment env) throws CoreException {
 		try {
-			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-			DocumentBuilder builder = factory.newDocumentBuilder();
+			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document document = builder.newDocument();
 
 			Element el = document.createElement(StorableEnvironment.ENVIRONMENT_ELEMENT_NAME);
 			document.appendChild(el);
 			XmlStorageElement rootElement = new XmlStorageElement(el);
 			env.serialize(rootElement);
 
-			Transformer transformer = TransformerFactory.newInstance().newTransformer();
+			Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
+					.newTransformer();
 			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
 			DOMSource source = new DOMSource(document);
 
diff --git a/core/org.eclipse.cdt.ui.tests/META-INF/MANIFEST.MF b/core/org.eclipse.cdt.ui.tests/META-INF/MANIFEST.MF
index 0ec28e7d4a..ec1c2b8788 100644
--- a/core/org.eclipse.cdt.ui.tests/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.cdt.ui.tests/META-INF/MANIFEST.MF
@@ -1,10 +1,10 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.cdt.ui.tests; singleton:=true
-Bundle-Version: 5.5.300.qualifier
+Bundle-Version: 5.5.400.qualifier
 Bundle-Activator: org.eclipse.cdt.ui.testplugin.CTestPlugin
 Bundle-Localization: plugin
 Export-Package: org.eclipse.cdt.ui.testplugin,
  org.eclipse.cdt.ui.testplugin.util,
  org.eclipse.cdt.ui.tests,
@@ -24,11 +24,11 @@ Require-Bundle: org.eclipse.jface.text,
  org.eclipse.ui.editors,
  org.eclipse.ui.ide,
  org.eclipse.ui.views,
  org.eclipse.ui.workbench.texteditor,
  org.junit,
- org.eclipse.cdt.core,
+ org.eclipse.cdt.core;bundle-version="8.3.0",
  org.eclipse.cdt.core.tests,
  org.eclipse.help,
  org.eclipse.core.runtime,
  org.eclipse.search,
  org.eclipse.compare,
diff --git a/core/org.eclipse.cdt.ui.tests/pom.xml b/core/org.eclipse.cdt.ui.tests/pom.xml
index 211ff730df..31bd2da6ff 100644
--- a/core/org.eclipse.cdt.ui.tests/pom.xml
+++ b/core/org.eclipse.cdt.ui.tests/pom.xml
@@ -19,11 +19,11 @@
 		<artifactId>cdt-parent</artifactId>
 		<version>11.3.0-SNAPSHOT</version>
 		<relativePath>../../pom.xml</relativePath>
 	</parent>
 
-	<version>5.5.300-SNAPSHOT</version>
+	<version>5.5.400-SNAPSHOT</version>
 	<artifactId>org.eclipse.cdt.ui.tests</artifactId>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<properties>
 		<extra.vmargs.indexer.timeout></extra.vmargs.indexer.timeout>
diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/templateengine/TestSharedDefaults.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/templateengine/TestSharedDefaults.java
index 1908403277..c13b8ea348 100644
--- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/templateengine/TestSharedDefaults.java
+++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/templateengine/TestSharedDefaults.java
@@ -14,16 +14,15 @@
 package org.eclipse.cdt.ui.tests.templateengine;
 
 import java.io.File;
 import java.util.List;
 
-import javax.xml.parsers.DocumentBuilderFactory;
-
 import org.eclipse.cdt.core.templateengine.SharedDefaults;
 import org.eclipse.cdt.core.templateengine.TemplateEngine;
 import org.eclipse.cdt.core.templateengine.TemplateEngineHelper;
 import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
 /**
 * Executes all the test cases of SharedDefaults backend functionality
@@ -57,11 +56,11 @@ public class TestSharedDefaults extends BaseTestCase {
 	 * @return the value for this key or null if no value exist for this key
 	 */
 	private String getValueFromBackEndStorate(String key) throws Exception {
 		File parsedXML = TemplateEngineHelper.getSharedDefaultLocation("shareddefaults.xml");
 
-		Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder()
+		Document document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE()
 				.parse(parsedXML.toURI().toURL().openStream());
 
 		List<Element> sharedElementList = TemplateEngine.getChildrenOfElement(document.getDocumentElement());
 		int listSize = sharedElementList.size();
 		for (int i = 0; i < listSize; i++) {
diff --git a/core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF b/core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF
index 3566e8c527..a955b6d60e 100644
--- a/core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF
@@ -102,11 +102,11 @@ Export-Package: org.eclipse.cdt.internal.corext;x-internal:=true,
  org.eclipse.cdt.ui.text.folding,
  org.eclipse.cdt.ui.wizards,
  org.eclipse.cdt.ui.wizards.conversion,
  org.eclipse.cdt.utils.ui.controls
 Import-Package: org.apache.commons.io;version="[2.8.0,3.0.0)"
-Require-Bundle: org.eclipse.cdt.core;bundle-version="[8.0.0,9.0.0)",
+Require-Bundle: org.eclipse.cdt.core;bundle-version="[8.3.0,9.0.0)",
  org.eclipse.compare;bundle-version="[3.8.500,4.0.0)",
  org.eclipse.core.expressions;bundle-version="[3.8.200,4.0.0)",
  org.eclipse.core.filesystem;bundle-version="[1.9.500,2.0.0)",
  org.eclipse.core.resources;bundle-version="[3.18.100,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.26.100,4.0.0)",
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CHelpProviderManager.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CHelpProviderManager.java
index 8b41bd5c80..e3d71168da 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CHelpProviderManager.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CHelpProviderManager.java
@@ -17,21 +17,20 @@ package org.eclipse.cdt.internal.ui;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerConfigurationException;
 import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.eclipse.cdt.core.model.ITranslationUnit;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.cdt.internal.ui.text.CHelpBookDescriptor;
 import org.eclipse.cdt.internal.ui.text.CHelpSettings;
 import org.eclipse.cdt.ui.CUIPlugin;
 import org.eclipse.cdt.ui.ICHelpResourceDescriptor;
 import org.eclipse.cdt.ui.IFunctionSummary;
@@ -102,11 +101,11 @@ public class CHelpProviderManager {
 		CHelpSettings settings = null;
 		Element rootElement = null;
 
 		if (file.isFile()) {
 			try {
-				DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+				DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 				Document doc = builder.parse(file);
 				NodeList nodes = doc.getElementsByTagName(ELEMENT_ROOT);
 
 				if (nodes.getLength() > 0)
 					rootElement = (Element) nodes.item(0);
@@ -185,11 +184,11 @@ public class CHelpProviderManager {
 		CHelpSettings settings = getHelpSettings(context);
 
 		File file = getSettingsFile();
 
 		try {
-			DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document doc;
 			Element rootElement = null;
 
 			if (file.exists()) {
 				doc = builder.parse(file);
@@ -208,11 +207,12 @@ public class CHelpProviderManager {
 
 			settings.serialize(doc, rootElement);
 
 			FileWriter writer = new FileWriter(file);
 
-			Transformer transformer = TransformerFactory.newInstance().newTransformer();
+			Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
+					.newTransformer();
 			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
 			DOMSource source = new DOMSource(doc);
 			StreamResult result = new StreamResult(writer);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/help/CHelpProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/help/CHelpProvider.java
index 6181ae206d..03a70d6ca2 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/help/CHelpProvider.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/help/CHelpProvider.java
@@ -21,13 +21,13 @@ import java.io.InputStreamReader;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
 
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
+import org.eclipse.cdt.ui.CUIPlugin;
 import org.eclipse.cdt.ui.ICHelpBook;
 import org.eclipse.cdt.ui.ICHelpProvider;
 import org.eclipse.cdt.ui.ICHelpResourceDescriptor;
 import org.eclipse.cdt.ui.IFunctionSummary;
 import org.eclipse.cdt.ui.text.ICHelpInvocationContext;
@@ -40,11 +40,10 @@ import org.eclipse.core.runtime.Platform;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
 
 public class CHelpProvider implements ICHelpProvider {
 
 	private static final String EXTENSION_POINT_ID = "org.eclipse.cdt.ui.HelpInfo"; //$NON-NLS-1$
 	private static final String ELEMENT_NAME = "helpInfo"; //$NON-NLS-1$
@@ -173,11 +172,11 @@ public class CHelpProvider implements ICHelpProvider {
 		Document doc = null;
 		try {
 			InputStream stream = new FileInputStream(fname);
 			BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
 			InputSource src = new InputSource(reader);
-			DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			doc = builder.parse(src);
 			Element e = doc.getDocumentElement();
 			if (NODE_HEAD.equals(e.getNodeName())) {
 				NodeList list = e.getChildNodes();
 				for (int j = 0; j < list.getLength(); j++) {
@@ -187,11 +186,10 @@ public class CHelpProvider implements ICHelpProvider {
 					if (NODE_BOOK.equals(node.getNodeName())) {
 						chbl.add(new CHelpBook((Element) node));
 					}
 				}
 			}
-		} catch (ParserConfigurationException e) {
-		} catch (SAXException e) {
-		} catch (IOException e) {
+		} catch (Exception e) {
+			CUIPlugin.log("Failed to load helpbook in " + pluginId, e); //$NON-NLS-1$
 		}
 	}
 }
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/ProfileStore.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/ProfileStore.java
index bacafcf0c8..33990efeed 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/ProfileStore.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/ProfileStore.java
@@ -30,21 +30,19 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.cdt.internal.ui.CUIException;
 import org.eclipse.cdt.internal.ui.CUIStatus;
 import org.eclipse.cdt.internal.ui.preferences.formatter.ProfileManager.CustomProfile;
 import org.eclipse.cdt.internal.ui.preferences.formatter.ProfileManager.Profile;
 import org.eclipse.cdt.ui.CUIPlugin;
@@ -233,12 +231,11 @@ public class ProfileStore {
 	 * @throws CoreException
 	 */
 	protected static List<Profile> readProfilesFromStream(InputSource inputSource) throws CoreException {
 		final ProfileDefaultHandler handler = new ProfileDefaultHandler();
 		try {
-			final SAXParserFactory factory = SAXParserFactory.newInstance();
-			final SAXParser parser = factory.newSAXParser();
+			final SAXParser parser = XmlProcessorFactoryCdt.createSAXParserWithErrorOnDOCTYPE();
 			parser.parse(inputSource, handler);
 		} catch (SAXException e) {
 			throw createException(e, FormatterMessages.CodingStyleConfigurationBlock_error_reading_xml_message);
 		} catch (IOException e) {
 			throw createException(e, FormatterMessages.CodingStyleConfigurationBlock_error_reading_xml_message);
@@ -280,12 +277,11 @@ public class ProfileStore {
 	 * @throws CoreException
 	 */
 	private static void writeProfilesToStream(Collection<Profile> profiles, OutputStream stream, String encoding,
 			IProfileVersioner profileVersioner) throws CoreException {
 		try {
-			final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-			final DocumentBuilder builder = factory.newDocumentBuilder();
+			final DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			final Document document = builder.newDocument();
 
 			final Element rootElement = document.createElement(XML_NODE_ROOT);
 			rootElement.setAttribute(XML_ATTRIBUTE_VERSION, Integer.toString(profileVersioner.getCurrentVersion()));
 
@@ -297,11 +293,12 @@ public class ProfileStore {
 					final Element profileElement = createProfileElement(profile, document, profileVersioner);
 					rootElement.appendChild(profileElement);
 				}
 			}
 
-			Transformer transformer = TransformerFactory.newInstance().newTransformer();
+			Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
+					.newTransformer();
 			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.ENCODING, encoding);
 			transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
 			transformer.transform(new DOMSource(document), new StreamResult(stream));
 		} catch (TransformerException e) {
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/ProjectSettingsExportStrategy.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/ProjectSettingsExportStrategy.java
index 72f9fde5d0..d87979abb2 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/ProjectSettingsExportStrategy.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/ProjectSettingsExportStrategy.java
@@ -19,18 +19,18 @@ import java.net.URI;
 import java.util.List;
 
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.sax.SAXTransformerFactory;
 import javax.xml.transform.sax.TransformerHandler;
 import javax.xml.transform.stream.StreamResult;
 
 import org.eclipse.cdt.core.resources.ResourcesUtil;
 import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
 import org.eclipse.cdt.core.settings.model.ICFolderDescription;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.cdt.ui.CUIPlugin;
 import org.eclipse.core.filesystem.URIUtil;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
 import org.xml.sax.SAXException;
@@ -91,11 +91,12 @@ public class ProjectSettingsExportStrategy implements IProjectSettingsWizardPage
 	/**
 	 * Exports the selected project settings to an XML file.
 	 */
 	@Override
 	public boolean finish(IProjectSettingsWizardPage page) {
-		SAXTransformerFactory factory = (SAXTransformerFactory) TransformerFactory.newInstance();
+		SAXTransformerFactory factory = (SAXTransformerFactory) XmlProcessorFactoryCdt
+				.createTransformerFactoryWithErrorOnDOCTYPE();
 		TransformerHandler handler = null;
 		try {
 			handler = factory.newTransformerHandler();
 		} catch (TransformerConfigurationException e) {
 			CUIPlugin.log(e);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/ProjectSettingsImportStrategy.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/ProjectSettingsImportStrategy.java
index 11d6e65006..1fd81cb84b 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/ProjectSettingsImportStrategy.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/settingswizards/ProjectSettingsImportStrategy.java
@@ -27,10 +27,11 @@ import javax.xml.parsers.DocumentBuilderFactory;
 
 import org.eclipse.cdt.core.model.CoreModel;
 import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
 import org.eclipse.cdt.core.settings.model.ICFolderDescription;
 import org.eclipse.cdt.core.settings.model.ICProjectDescription;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.cdt.ui.CUIPlugin;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.jface.dialogs.IMessageProvider;
 import org.w3c.dom.Document;
@@ -228,11 +229,11 @@ public class ProjectSettingsImportStrategy implements IProjectSettingsWizardPage
 	 * Eventually there could be an extension point for adding settings processors
 	 * so I'm coding everything with the assumption that each settings processor
 	 * will do its own validation programatically.
 	 */
 	private static Document parse(InputStream in) throws SettingsImportExportException {
-		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+		DocumentBuilderFactory factory = XmlProcessorFactoryCdt.createDocumentBuilderFactoryWithErrorOnDOCTYPE();
 		factory.setValidating(false);
 		factory.setNamespaceAware(false);
 		factory.setIgnoringComments(true);
 
 		try {
diff --git a/debug/org.eclipse.cdt.debug.core/META-INF/MANIFEST.MF b/debug/org.eclipse.cdt.debug.core/META-INF/MANIFEST.MF
index e8c495c3b5..821fa86542 100644
--- a/debug/org.eclipse.cdt.debug.core/META-INF/MANIFEST.MF
+++ b/debug/org.eclipse.cdt.debug.core/META-INF/MANIFEST.MF
@@ -1,10 +1,10 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.cdt.debug.core; singleton:=true
-Bundle-Version: 8.8.100.qualifier
+Bundle-Version: 8.8.200.qualifier
 Bundle-Activator: org.eclipse.cdt.debug.core.CDebugCorePlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Export-Package: org.eclipse.cdt.debug.core,
  org.eclipse.cdt.debug.core.breakpointactions,
@@ -36,11 +36,11 @@ Export-Package: org.eclipse.cdt.debug.core,
    org.eclipse.cdt.dsf,
    org.eclipse.cdt.dsf.gdb,
    org.eclipse.cdt.dsf.ui,
    org.eclipse.cdt.tests.dsf.gdb",
  org.eclipse.cdt.debug.internal.core.srcfinder;x-internal:=true
-Require-Bundle: org.eclipse.cdt.core;bundle-version="[8.0.0,9.0.0)",
+Require-Bundle: org.eclipse.cdt.core;bundle-version="[8.3.0,9.0.0)",
  org.eclipse.core.filesystem;bundle-version="1.2.0",
  org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.core.variables;bundle-version="3.2.0",
  org.eclipse.debug.core;bundle-version="[3.2.0,4.0.0)",
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDebugUtils.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDebugUtils.java
index 74768b88cb..9a510412b3 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDebugUtils.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDebugUtils.java
@@ -44,10 +44,11 @@ import org.eclipse.cdt.debug.core.model.ICBreakpointType;
 import org.eclipse.cdt.debug.core.model.ICDynamicPrintf;
 import org.eclipse.cdt.debug.core.model.ICFunctionBreakpoint;
 import org.eclipse.cdt.debug.core.model.ICLineBreakpoint;
 import org.eclipse.cdt.debug.core.model.ICWatchpoint;
 import org.eclipse.cdt.debug.core.model.ICWatchpoint2;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.ProjectScope;
 import org.eclipse.core.resources.ResourcesPlugin;
@@ -225,11 +226,11 @@ public class CDebugUtils {
 	 *
 	 * @return the document as a string
 	 */
 	public static String serializeDocument(Document doc, boolean indent) throws IOException, TransformerException {
 		ByteArrayOutputStream s = new ByteArrayOutputStream();
-		TransformerFactory factory = TransformerFactory.newInstance();
+		TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
 		Transformer transformer = factory.newTransformer();
 		transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 		transformer.setOutputProperty(OutputKeys.INDENT, indent ? "yes" : "no"); //$NON-NLS-1$ //$NON-NLS-2$
 		DOMSource source = new DOMSource(doc);
 		StreamResult outputTarget = new StreamResult(s);
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/breakpointactions/BreakpointActionManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/breakpointactions/BreakpointActionManager.java
index 1cef56047b..43a11b3e43 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/breakpointactions/BreakpointActionManager.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/breakpointactions/BreakpointActionManager.java
@@ -16,18 +16,18 @@ package org.eclipse.cdt.debug.core.breakpointactions;
 import java.io.ByteArrayOutputStream;
 import java.io.StringReader;
 import java.util.ArrayList;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.eclipse.cdt.debug.core.CDebugCorePlugin;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IExtension;
@@ -190,11 +190,11 @@ public class BreakpointActionManager {
 			return;
 
 		Element root = null;
 		DocumentBuilder parser;
 		try {
-			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			parser.setErrorHandler(new DefaultHandler());
 			root = parser.parse(new InputSource(new StringReader(actionData))).getDocumentElement();
 
 			NodeList nodeList = root.getChildNodes();
 			int entryCount = nodeList.getLength();
@@ -244,14 +244,12 @@ public class BreakpointActionManager {
 	}
 
 	public void saveActionData() {
 		String actionData = ""; //$NON-NLS-1$
 
-		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-		DocumentBuilder docBuilder = null;
 		try {
-			docBuilder = dfactory.newDocumentBuilder();
+			DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document doc = docBuilder.newDocument();
 
 			Element rootElement = doc.createElement("breakpointActionData"); //$NON-NLS-1$
 			doc.appendChild(rootElement);
 
@@ -263,11 +261,11 @@ public class BreakpointActionManager {
 				rootElement.appendChild(element);
 			}
 
 			ByteArrayOutputStream s = new ByteArrayOutputStream();
 
-			TransformerFactory factory = TransformerFactory.newInstance();
+			TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
 			Transformer transformer = factory.newTransformer();
 			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
 
 			DOMSource source = new DOMSource(doc);
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CDirectorySourceLocation.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CDirectorySourceLocation.java
index ec41579706..004e28c97c 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CDirectorySourceLocation.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CDirectorySourceLocation.java
@@ -21,19 +21,19 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.LinkedList;
 import java.util.List;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.TransformerException;
 
 import org.eclipse.cdt.core.resources.FileStorage;
 import org.eclipse.cdt.debug.core.CDebugCorePlugin;
 import org.eclipse.cdt.debug.core.CDebugUtils;
 import org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation;
 import org.eclipse.cdt.debug.core.sourcelookup.IDirectorySourceLocation;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.cdt.internal.core.resources.ResourceLookup;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IStorage;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
@@ -277,11 +277,11 @@ public class CDirectorySourceLocation implements IDirectorySourceLocation {
 	@Override
 	public String getMemento() throws CoreException {
 		Document document = null;
 		Throwable ex = null;
 		try {
-			document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+			document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().newDocument();
 			Element node = document.createElement(ELEMENT_NAME);
 			document.appendChild(node);
 			node.setAttribute(ATTR_DIRECTORY, getDirectory().toOSString());
 			if (getAssociation() != null)
 				node.setAttribute(ATTR_ASSOCIATION, getAssociation().toOSString());
@@ -305,11 +305,11 @@ public class CDirectorySourceLocation implements IDirectorySourceLocation {
 	@Override
 	public void initializeFrom(String memento) throws CoreException {
 		Exception ex = null;
 		try {
 			Element root = null;
-			DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			DocumentBuilder parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			StringReader reader = new StringReader(memento);
 			InputSource source = new InputSource(reader);
 			root = parser.parse(source).getDocumentElement();
 
 			String dir = root.getAttribute(ATTR_DIRECTORY);
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CProjectSourceLocation.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CProjectSourceLocation.java
index b312529bfd..5e4e456142 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CProjectSourceLocation.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CProjectSourceLocation.java
@@ -19,18 +19,18 @@ import java.io.StringReader;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedList;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.TransformerException;
 
 import org.eclipse.cdt.debug.core.CDebugCorePlugin;
 import org.eclipse.cdt.debug.core.CDebugUtils;
 import org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation;
 import org.eclipse.cdt.debug.core.sourcelookup.IProjectSourceLocation;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.cdt.internal.core.resources.ResourceLookup;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IResourceProxy;
@@ -206,11 +206,11 @@ public class CProjectSourceLocation implements IProjectSourceLocation {
 	@Override
 	public String getMemento() throws CoreException {
 		Document document = null;
 		Throwable ex = null;
 		try {
-			document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+			document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().newDocument();
 			Element node = document.createElement(ELEMENT_NAME);
 			document.appendChild(node);
 			node.setAttribute(ATTR_PROJECT, getProject().getName());
 			node.setAttribute(ATTR_GENERIC, String.valueOf(isGeneric()));
 			return CDebugUtils.serializeDocument(document);
@@ -232,11 +232,11 @@ public class CProjectSourceLocation implements IProjectSourceLocation {
 	@Override
 	public void initializeFrom(String memento) throws CoreException {
 		Exception ex = null;
 		try {
 			Element root = null;
-			DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			DocumentBuilder parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			StringReader reader = new StringReader(memento);
 			InputSource source = new InputSource(reader);
 			root = parser.parse(source).getDocumentElement();
 
 			String name = root.getAttribute(ATTR_PROJECT);
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLocator.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLocator.java
index 57d0f388db..d4eb106dae 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLocator.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLocator.java
@@ -22,21 +22,21 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.TransformerException;
 
 import org.eclipse.cdt.debug.core.CDebugCorePlugin;
 import org.eclipse.cdt.debug.core.CDebugUtils;
 import org.eclipse.cdt.debug.core.model.ICStackFrame;
 import org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation;
 import org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocator;
 import org.eclipse.cdt.debug.core.sourcelookup.IProjectSourceLocation;
 import org.eclipse.cdt.debug.core.sourcelookup.SourceLookupFactory;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IResourceChangeEvent;
 import org.eclipse.core.resources.IResourceChangeListener;
@@ -237,11 +237,11 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
 	@Override
 	public String getMemento() throws CoreException {
 		Document document = null;
 		Throwable ex = null;
 		try {
-			document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+			document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().newDocument();
 			Element node = document.createElement(SOURCE_LOCATOR_NAME);
 			document.appendChild(node);
 			ICSourceLocation[] locations = getSourceLocations();
 			saveDisabledGenericSourceLocations(locations, document, node);
 			saveAdditionalSourceLocations(locations, document, node);
@@ -267,11 +267,11 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
 	@Override
 	public void initializeFromMemento(String memento) throws CoreException {
 		Exception ex = null;
 		try {
 			Element root = null;
-			DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			DocumentBuilder parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			StringReader reader = new StringReader(memento);
 			InputSource source = new InputSource(reader);
 			root = parser.parse(source).getDocumentElement();
 			if (!root.getNodeName().equalsIgnoreCase(SOURCE_LOCATOR_NAME)) {
 				abort(InternalSourceLookupMessages.CSourceLocator_1, null);
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/SourceUtils.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/SourceUtils.java
index e168b2dc02..fff66ff420 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/SourceUtils.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/SourceUtils.java
@@ -23,11 +23,10 @@ import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.TransformerException;
 
 import org.eclipse.cdt.core.model.CoreModel;
 import org.eclipse.cdt.core.model.ICProject;
@@ -39,10 +38,11 @@ import org.eclipse.cdt.debug.core.sourcelookup.CProjectSourceContainer;
 import org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation;
 import org.eclipse.cdt.debug.core.sourcelookup.IDirectorySourceLocation;
 import org.eclipse.cdt.debug.core.sourcelookup.IMappingSourceContainer;
 import org.eclipse.cdt.debug.core.sourcelookup.IProjectSourceLocation;
 import org.eclipse.cdt.debug.core.sourcelookup.MappingSourceContainer;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.cdt.internal.core.resources.ResourceLookup;
 import org.eclipse.core.filesystem.URIUtil;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.ResourcesPlugin;
@@ -71,11 +71,11 @@ public class SourceUtils {
 
 	public static String getCommonSourceLocationsMemento(ICSourceLocation[] locations) {
 		Document document = null;
 		Throwable ex = null;
 		try {
-			document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+			document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().newDocument();
 			Element element = document.createElement(NAME_COMMON_SOURCE_LOCATIONS);
 			document.appendChild(element);
 			saveSourceLocations(document, element, locations);
 			return CDebugUtils.serializeDocument(document);
 		} catch (ParserConfigurationException e) {
@@ -106,11 +106,11 @@ public class SourceUtils {
 
 	public static ICSourceLocation[] getCommonSourceLocationsFromMemento(String memento) {
 		ICSourceLocation[] result = new ICSourceLocation[0];
 		if (!isEmpty(memento)) {
 			try {
-				DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+				DocumentBuilder parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 				StringReader reader = new StringReader(memento);
 				InputSource source = new InputSource(reader);
 				Element root = parser.parse(source).getDocumentElement();
 				if (root.getNodeName().equalsIgnoreCase(NAME_COMMON_SOURCE_LOCATIONS))
 					result = initializeSourceLocations(root);
diff --git a/debug/org.eclipse.cdt.debug.ui/META-INF/MANIFEST.MF b/debug/org.eclipse.cdt.debug.ui/META-INF/MANIFEST.MF
index da4ea5862d..88cbd57ad2 100644
--- a/debug/org.eclipse.cdt.debug.ui/META-INF/MANIFEST.MF
+++ b/debug/org.eclipse.cdt.debug.ui/META-INF/MANIFEST.MF
@@ -49,11 +49,11 @@ Require-Bundle: org.eclipse.ui.ide;bundle-version="[3.16.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.debug.ui;bundle-version="[3.7.0,4.0.0)",
  org.eclipse.debug.core;bundle-version="[3.7.0,4.0.0)",
  org.eclipse.cdt.debug.core;bundle-version="[7.0.0,9.0.0)",
  org.eclipse.cdt.ui;bundle-version="[8.0.0,9.0.0)",
- org.eclipse.cdt.core;bundle-version="[8.0.0,9.0.0)",
+ org.eclipse.cdt.core;bundle-version="[8.3.0,9.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.ui.console;bundle-version="[3.1.100,4.0.0)",
  org.eclipse.ui.views;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.core.filesystem,
  org.eclipse.core.expressions,
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ExternalToolAction.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ExternalToolAction.java
index f7881551a1..5824549d3e 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ExternalToolAction.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ExternalToolAction.java
@@ -16,20 +16,20 @@ package org.eclipse.cdt.debug.ui.breakpointactions;
 import java.io.ByteArrayOutputStream;
 import java.io.StringReader;
 import java.text.MessageFormat;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.eclipse.cdt.debug.core.CDIDebugModel;
 import org.eclipse.cdt.debug.core.breakpointactions.AbstractBreakpointAction;
 import org.eclipse.cdt.debug.internal.core.ICDebugInternalConstants;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.MultiStatus;
@@ -130,24 +130,22 @@ public class ExternalToolAction extends AbstractBreakpointAction {
 
 	@Override
 	public String getMemento() {
 		String executeData = ""; //$NON-NLS-1$
 		if (externalToolName != null) {
-			DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-			DocumentBuilder docBuilder = null;
 			try {
-				docBuilder = dfactory.newDocumentBuilder();
+				DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 				Document doc = docBuilder.newDocument();
 
 				Element rootElement = doc.createElement("launchConfigName"); //$NON-NLS-1$
 				rootElement.setAttribute("configName", externalToolName); //$NON-NLS-1$
 
 				doc.appendChild(rootElement);
 
 				ByteArrayOutputStream s = new ByteArrayOutputStream();
 
-				TransformerFactory factory = TransformerFactory.newInstance();
+				TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
 				Transformer transformer = factory.newTransformer();
 				transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 				transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
 
 				DOMSource source = new DOMSource(doc);
@@ -177,11 +175,11 @@ public class ExternalToolAction extends AbstractBreakpointAction {
 	@Override
 	public void initializeFromMemento(String data) {
 		Element root = null;
 		DocumentBuilder parser;
 		try {
-			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			parser.setErrorHandler(new DefaultHandler());
 			root = parser.parse(new InputSource(new StringReader(data))).getDocumentElement();
 			String value = root.getAttribute("configName"); //$NON-NLS-1$
 			if (value == null)
 				throw new Exception();
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/LogAction.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/LogAction.java
index 2fc6c8e116..c9c674d17d 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/LogAction.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/LogAction.java
@@ -16,21 +16,21 @@ package org.eclipse.cdt.debug.ui.breakpointactions;
 import java.io.ByteArrayOutputStream;
 import java.io.StringReader;
 import java.text.MessageFormat;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.eclipse.cdt.debug.core.CDIDebugModel;
 import org.eclipse.cdt.debug.core.breakpointactions.AbstractBreakpointAction;
 import org.eclipse.cdt.debug.core.breakpointactions.ILogActionEnabler;
 import org.eclipse.cdt.debug.internal.core.ICDebugInternalConstants;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.debug.core.model.IBreakpoint;
@@ -115,25 +115,23 @@ public class LogAction extends AbstractBreakpointAction {
 
 	@Override
 	public String getMemento() {
 		String logData = ""; //$NON-NLS-1$
 
-		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-		DocumentBuilder docBuilder = null;
 		try {
-			docBuilder = dfactory.newDocumentBuilder();
+			DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document doc = docBuilder.newDocument();
 
 			Element rootElement = doc.createElement("logData"); //$NON-NLS-1$
 			rootElement.setAttribute("message", message); //$NON-NLS-1$
 			rootElement.setAttribute("evalExpr", Boolean.toString(evaluateExpression)); //$NON-NLS-1$
 
 			doc.appendChild(rootElement);
 
 			ByteArrayOutputStream s = new ByteArrayOutputStream();
 
-			TransformerFactory factory = TransformerFactory.newInstance();
+			TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
 			Transformer transformer = factory.newTransformer();
 			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
 
 			DOMSource source = new DOMSource(doc);
@@ -172,11 +170,11 @@ public class LogAction extends AbstractBreakpointAction {
 	@Override
 	public void initializeFromMemento(String data) {
 		Element root = null;
 		DocumentBuilder parser;
 		try {
-			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			parser.setErrorHandler(new DefaultHandler());
 			root = parser.parse(new InputSource(new StringReader(data))).getDocumentElement();
 			String value = root.getAttribute("message"); //$NON-NLS-1$
 			if (value == null)
 				throw new Exception();
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ResumeAction.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ResumeAction.java
index c78d5fc605..5af7fc7cfe 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ResumeAction.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ResumeAction.java
@@ -16,11 +16,10 @@ package org.eclipse.cdt.debug.ui.breakpointactions;
 import java.io.ByteArrayOutputStream;
 import java.io.StringReader;
 import java.text.MessageFormat;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
@@ -29,10 +28,11 @@ import org.eclipse.cdt.debug.core.CDIDebugModel;
 import org.eclipse.cdt.debug.core.breakpointactions.AbstractBreakpointAction;
 import org.eclipse.cdt.debug.core.breakpointactions.IResumeActionEnabler;
 import org.eclipse.cdt.debug.internal.core.ICDebugInternalConstants;
 import org.eclipse.cdt.debug.internal.ui.IInternalCDebugUIConstants;
 import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.MultiStatus;
 import org.eclipse.core.runtime.Status;
@@ -111,24 +111,22 @@ public class ResumeAction extends AbstractBreakpointAction {
 
 	@Override
 	public String getMemento() {
 		String resumeData = ""; //$NON-NLS-1$
 
-		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-		DocumentBuilder docBuilder = null;
 		try {
-			docBuilder = dfactory.newDocumentBuilder();
+			DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document doc = docBuilder.newDocument();
 
 			Element rootElement = doc.createElement("resumeData"); //$NON-NLS-1$
 			rootElement.setAttribute("pauseTime", Integer.toString(pauseTime)); //$NON-NLS-1$
 
 			doc.appendChild(rootElement);
 
 			ByteArrayOutputStream s = new ByteArrayOutputStream();
 
-			TransformerFactory factory = TransformerFactory.newInstance();
+			TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
 			Transformer transformer = factory.newTransformer();
 			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
 
 			DOMSource source = new DOMSource(doc);
@@ -159,11 +157,11 @@ public class ResumeAction extends AbstractBreakpointAction {
 	@Override
 	public void initializeFromMemento(String data) {
 		Element root = null;
 		DocumentBuilder parser;
 		try {
-			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			parser.setErrorHandler(new DefaultHandler());
 			root = parser.parse(new InputSource(new StringReader(data))).getDocumentElement();
 			String value = root.getAttribute("pauseTime"); //$NON-NLS-1$
 			if (value == null)
 				throw new Exception();
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ReverseDebugAction.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ReverseDebugAction.java
index dfcef5b767..17be6142b3 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ReverseDebugAction.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ReverseDebugAction.java
@@ -15,11 +15,10 @@ package org.eclipse.cdt.debug.ui.breakpointactions;
 
 import java.io.ByteArrayOutputStream;
 import java.io.StringReader;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
@@ -28,10 +27,11 @@ import org.eclipse.cdt.debug.core.CDIDebugModel;
 import org.eclipse.cdt.debug.core.breakpointactions.AbstractBreakpointAction;
 import org.eclipse.cdt.debug.core.breakpointactions.IReverseDebugEnabler;
 import org.eclipse.cdt.debug.internal.core.ICDebugInternalConstants;
 import org.eclipse.cdt.debug.internal.ui.IInternalCDebugUIConstants;
 import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.MultiStatus;
 import org.eclipse.core.runtime.Status;
@@ -121,24 +121,22 @@ public class ReverseDebugAction extends AbstractBreakpointAction {
 
 	@Override
 	public String getMemento() {
 		String reverseDebugData = ""; //$NON-NLS-1$
 
-		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-		DocumentBuilder docBuilder = null;
 		try {
-			docBuilder = dfactory.newDocumentBuilder();
+			DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document doc = docBuilder.newDocument();
 
 			Element rootElement = doc.createElement("reverseDebugData"); //$NON-NLS-1$
 			rootElement.setAttribute("operation", fOperation.toString()); //$NON-NLS-1$
 
 			doc.appendChild(rootElement);
 
 			ByteArrayOutputStream s = new ByteArrayOutputStream();
 
-			TransformerFactory factory = TransformerFactory.newInstance();
+			TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
 			Transformer transformer = factory.newTransformer();
 			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
 
 			DOMSource source = new DOMSource(doc);
@@ -157,11 +155,11 @@ public class ReverseDebugAction extends AbstractBreakpointAction {
 	@Override
 	public void initializeFromMemento(String data) {
 		Element root = null;
 		DocumentBuilder parser;
 		try {
-			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			parser.setErrorHandler(new DefaultHandler());
 			root = parser.parse(new InputSource(new StringReader(data))).getDocumentElement();
 			String value = root.getAttribute("operation"); //$NON-NLS-1$
 			if (value == null)
 				throw new Exception();
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/SoundAction.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/SoundAction.java
index f3cdfba317..cf7f0c7091 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/SoundAction.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/SoundAction.java
@@ -25,20 +25,20 @@ import javax.sound.sampled.AudioSystem;
 import javax.sound.sampled.DataLine;
 import javax.sound.sampled.LineUnavailableException;
 import javax.sound.sampled.SourceDataLine;
 import javax.sound.sampled.UnsupportedAudioFileException;
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.eclipse.cdt.debug.core.CDIDebugModel;
 import org.eclipse.cdt.debug.core.breakpointactions.AbstractBreakpointAction;
 import org.eclipse.cdt.debug.internal.core.ICDebugInternalConstants;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.debug.core.model.IBreakpoint;
@@ -135,24 +135,22 @@ public class SoundAction extends AbstractBreakpointAction {
 
 	@Override
 	public String getMemento() {
 		String soundData = ""; //$NON-NLS-1$
 		if (soundFile != null) {
-			DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-			DocumentBuilder docBuilder = null;
 			try {
-				docBuilder = dfactory.newDocumentBuilder();
+				DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 				Document doc = docBuilder.newDocument();
 
 				Element rootElement = doc.createElement("soundData"); //$NON-NLS-1$
 				rootElement.setAttribute("file", soundFile.getAbsolutePath()); //$NON-NLS-1$
 
 				doc.appendChild(rootElement);
 
 				ByteArrayOutputStream s = new ByteArrayOutputStream();
 
-				TransformerFactory factory = TransformerFactory.newInstance();
+				TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
 				Transformer transformer = factory.newTransformer();
 				transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 				transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
 
 				DOMSource source = new DOMSource(doc);
@@ -168,14 +166,19 @@ public class SoundAction extends AbstractBreakpointAction {
 		return soundData;
 	}
 
 	@Override
 	public void initializeFromMemento(String data) {
+		if (data == null || data.isBlank()) {
+			// An empty string will cause a sax parser error below
+			return;
+		}
+
 		Element root = null;
 		DocumentBuilder parser;
 		try {
-			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			parser.setErrorHandler(new DefaultHandler());
 			root = parser.parse(new InputSource(new StringReader(data))).getDocumentElement();
 			String value = root.getAttribute("file"); //$NON-NLS-1$
 			if (value == null)
 				throw new Exception();
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/SoundActionPage.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/SoundActionPage.java
index 1abe58efa3..0115037e5e 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/SoundActionPage.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/SoundActionPage.java
@@ -18,19 +18,19 @@ import java.io.File;
 import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.Iterator;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.eclipse.cdt.debug.core.breakpointactions.IBreakpointAction;
 import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.PlatformObject;
 import org.eclipse.swt.widgets.Composite;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -159,11 +159,11 @@ public class SoundActionPage extends PlatformObject implements IBreakpointAction
 		recentSounds = new ArrayList<>();
 
 		Element root = null;
 		DocumentBuilder parser;
 		try {
-			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			parser.setErrorHandler(new DefaultHandler());
 			root = parser.parse(new InputSource(new StringReader(recentSoundData))).getDocumentElement();
 
 			NodeList nodeList = root.getChildNodes();
 			int entryCount = nodeList.getLength();
@@ -196,14 +196,12 @@ public class SoundActionPage extends PlatformObject implements IBreakpointAction
 	}
 
 	public void saveRecentSounds() {
 		String recentSoundData = ""; //$NON-NLS-1$
 
-		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-		DocumentBuilder docBuilder = null;
 		try {
-			docBuilder = dfactory.newDocumentBuilder();
+			DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document doc = docBuilder.newDocument();
 
 			Element rootElement = doc.createElement("recentSounds"); //$NON-NLS-1$
 			doc.appendChild(rootElement);
 
@@ -216,11 +214,11 @@ public class SoundActionPage extends PlatformObject implements IBreakpointAction
 
 			}
 
 			ByteArrayOutputStream s = new ByteArrayOutputStream();
 
-			TransformerFactory factory = TransformerFactory.newInstance();
+			TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
 			Transformer transformer = factory.newTransformer();
 			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
 
 			DOMSource source = new DOMSource(doc);
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/sourcelookup/OldDefaultSourceLocator.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/sourcelookup/OldDefaultSourceLocator.java
index 550704c551..b92f213ae4 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/sourcelookup/OldDefaultSourceLocator.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/sourcelookup/OldDefaultSourceLocator.java
@@ -16,19 +16,19 @@ package org.eclipse.cdt.debug.ui.sourcelookup;
 import java.io.IOException;
 import java.io.StringReader;
 import java.text.MessageFormat;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.TransformerException;
 
 import org.eclipse.cdt.debug.core.CDebugUtils;
 import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
 import org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocator;
 import org.eclipse.cdt.debug.core.sourcelookup.SourceLookupFactory;
 import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResourceChangeListener;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IAdaptable;
@@ -78,11 +78,11 @@ public class OldDefaultSourceLocator implements IPersistableSourceLocator, IAdap
 	public String getMemento() throws CoreException {
 		if (getCSourceLocator() != null) {
 			Document document = null;
 			Throwable ex = null;
 			try {
-				document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+				document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().newDocument();
 				Element element = document.createElement(ELEMENT_NAME);
 				document.appendChild(element);
 				element.setAttribute(ATTR_PROJECT, getCSourceLocator().getProject().getName());
 				IPersistableSourceLocator psl = getPersistableSourceLocator();
 				if (psl != null) {
@@ -107,11 +107,11 @@ public class OldDefaultSourceLocator implements IPersistableSourceLocator, IAdap
 	@Override
 	public void initializeFromMemento(String memento) throws CoreException {
 		Exception ex = null;
 		try {
 			Element root = null;
-			DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			DocumentBuilder parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			StringReader reader = new StringReader(memento);
 			InputSource source = new InputSource(reader);
 			root = parser.parse(source).getDocumentElement();
 			if (!root.getNodeName().equalsIgnoreCase(ELEMENT_NAME)) {
 				abort(SourceLookupMessages.getString("OldDefaultSourceLocator.2"), null); //$NON-NLS-1$
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/META-INF/MANIFEST.MF b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/META-INF/MANIFEST.MF
index 5ba9b64fdc..388338d68d 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/META-INF/MANIFEST.MF
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/META-INF/MANIFEST.MF
@@ -1,11 +1,11 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui;singleton:=true
-Bundle-Version: 1.3.100.qualifier
+Bundle-Version: 1.3.200.qualifier
 Bundle-Activator: org.eclipse.cdt.dsf.gdb.multicorevisualizer.internal.ui.MulticoreVisualizerUIPlugin
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
  org.eclipse.cdt.dsf,
@@ -13,11 +13,11 @@ Require-Bundle: org.eclipse.ui,
  org.eclipse.cdt.dsf.gdb,
  org.eclipse.cdt.ui,
  org.eclipse.cdt.visualizer.core,
  org.eclipse.cdt.visualizer.ui,
  org.eclipse.debug.ui,
- org.eclipse.cdt.core,
+ org.eclipse.cdt.core;bundle-version="8.3.0",
  org.eclipse.cdt.debug.ui
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Export-Package: org.eclipse.cdt.dsf.gdb.multicorevisualizer.internal.ui;x-internal:=true,
  org.eclipse.cdt.dsf.gdb.multicorevisualizer.internal.ui.actions;x-internal:=true,
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/utils/MementoUtils.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/utils/MementoUtils.java
index 927ed963c9..3e13df4e8a 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/utils/MementoUtils.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/utils/MementoUtils.java
@@ -20,17 +20,17 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.w3c.dom.Attr;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
@@ -59,14 +59,12 @@ public class MementoUtils {
 
 	/** Returns a XML memento, that encodes a Map of Strings */
 	public static String encodeMapIntoMemento(Map<String, String> keyPairValues) {
 		String returnValue = null;
 
-		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-		DocumentBuilder docBuilder = null;
 		try {
-			docBuilder = dfactory.newDocumentBuilder();
+			DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document doc = docBuilder.newDocument();
 
 			Element rootElement = doc.createElement(ROOT_ELEMENT_TAGNAME);
 			doc.appendChild(rootElement);
 			// create one XML element per map entry
@@ -78,11 +76,11 @@ public class MementoUtils {
 				rootElement.appendChild(elem);
 			}
 
 			ByteArrayOutputStream s = new ByteArrayOutputStream();
 
-			TransformerFactory factory = TransformerFactory.newInstance();
+			TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
 			Transformer transformer = factory.newTransformer();
 			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
 
 			DOMSource source = new DOMSource(doc);
@@ -101,11 +99,11 @@ public class MementoUtils {
 		Map<String, String> keyPairValues = new HashMap<>();
 
 		Element root = null;
 		DocumentBuilder parser;
 		try {
-			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			parser.setErrorHandler(new DefaultHandler());
 			root = parser.parse(new InputSource(new StringReader(memento))).getDocumentElement();
 			NodeList nodeList = root.getChildNodes();
 			for (int i = 0; i < nodeList.getLength(); i++) {
 				Node node = nodeList.item(i);
@@ -140,14 +138,12 @@ public class MementoUtils {
 
 	/** Returns a XML memento, that encodes a List of Strings */
 	public static String encodeListIntoMemento(List<String> labels) {
 		String returnValue = null;
 
-		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-		DocumentBuilder docBuilder = null;
 		try {
-			docBuilder = dfactory.newDocumentBuilder();
+			DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document doc = docBuilder.newDocument();
 
 			Element rootElement = doc.createElement(ROOT_ELEMENT_TAGNAME);
 			doc.appendChild(rootElement);
 			// create one XML element per list entry to save
@@ -157,11 +153,11 @@ public class MementoUtils {
 				rootElement.appendChild(elem);
 			}
 
 			ByteArrayOutputStream s = new ByteArrayOutputStream();
 
-			TransformerFactory factory = TransformerFactory.newInstance();
+			TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
 			Transformer transformer = factory.newTransformer();
 			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
 
 			DOMSource source = new DOMSource(doc);
@@ -180,11 +176,11 @@ public class MementoUtils {
 		List<String> list = new ArrayList<>();
 
 		Element root = null;
 		DocumentBuilder parser;
 		try {
-			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			parser.setErrorHandler(new DefaultHandler());
 			root = parser.parse(new InputSource(new StringReader(memento))).getDocumentElement();
 			NodeList nodeList = root.getChildNodes();
 			for (int i = 0; i < nodeList.getLength(); i++) {
 				Node node = nodeList.item(i);
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF b/dsf-gdb/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF
index cf33744fc7..842dbd2786 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF
@@ -7,11 +7,11 @@ Bundle-Version: 7.1.100.qualifier
 Bundle-Activator: org.eclipse.cdt.dsf.gdb.internal.GdbPlugin
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.cdt.dsf,
  org.eclipse.debug.core,
- org.eclipse.cdt.core,
+ org.eclipse.cdt.core;bundle-version="8.3.0",
  org.eclipse.cdt.debug.core,
  org.eclipse.core.variables,
  org.eclipse.cdt.launch;bundle-version="10.3.0",
  org.eclipse.cdt.gdb;bundle-version="7.0.0",
  org.eclipse.core.resources,
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/tracepointactions/CollectAction.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/tracepointactions/CollectAction.java
index 9e41cac83d..cc5feccc30 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/tracepointactions/CollectAction.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/tracepointactions/CollectAction.java
@@ -16,18 +16,18 @@ package org.eclipse.cdt.dsf.gdb.internal.tracepointactions;
 
 import java.io.ByteArrayOutputStream;
 import java.io.StringReader;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.xml.sax.InputSource;
 import org.xml.sax.helpers.DefaultHandler;
 
@@ -122,14 +122,12 @@ public class CollectAction extends AbstractTracepointAction {
 
 	@Override
 	public String getMemento() {
 		String collectData = ""; //$NON-NLS-1$
 
-		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-		DocumentBuilder docBuilder = null;
 		try {
-			docBuilder = dfactory.newDocumentBuilder();
+			DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document doc = docBuilder.newDocument();
 
 			Element rootElement = doc.createElement(COLLECT_ACTION_ELEMENT_NAME);
 
 			// Store the different attributes of this collect action
@@ -140,11 +138,11 @@ public class CollectAction extends AbstractTracepointAction {
 
 			doc.appendChild(rootElement);
 
 			ByteArrayOutputStream s = new ByteArrayOutputStream();
 
-			TransformerFactory factory = TransformerFactory.newInstance();
+			TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
 			Transformer transformer = factory.newTransformer();
 			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
 
 			DOMSource source = new DOMSource(doc);
@@ -187,11 +185,11 @@ public class CollectAction extends AbstractTracepointAction {
 	@Override
 	public void initializeFromMemento(String data) {
 		Element root = null;
 		DocumentBuilder parser;
 		try {
-			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			parser.setErrorHandler(new DefaultHandler());
 			root = parser.parse(new InputSource(new StringReader(data))).getDocumentElement();
 
 			fCollectString = root.getAttribute(COLLECT_STRING_ATTR);
 			if (fCollectString == null)
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/tracepointactions/EvaluateAction.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/tracepointactions/EvaluateAction.java
index 0ac7c8dff8..a372db23e5 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/tracepointactions/EvaluateAction.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/tracepointactions/EvaluateAction.java
@@ -17,18 +17,18 @@ package org.eclipse.cdt.dsf.gdb.internal.tracepointactions;
 
 import java.io.ByteArrayOutputStream;
 import java.io.StringReader;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.xml.sax.InputSource;
 import org.xml.sax.helpers.DefaultHandler;
 
@@ -60,24 +60,22 @@ public class EvaluateAction extends AbstractTracepointAction {
 
 	@Override
 	public String getMemento() {
 		String collectData = ""; //$NON-NLS-1$
 
-		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-		DocumentBuilder docBuilder = null;
 		try {
-			docBuilder = dfactory.newDocumentBuilder();
+			DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document doc = docBuilder.newDocument();
 
 			Element rootElement = doc.createElement("evalData"); //$NON-NLS-1$
 			rootElement.setAttribute("evalString", fEvalString); //$NON-NLS-1$
 
 			doc.appendChild(rootElement);
 
 			ByteArrayOutputStream s = new ByteArrayOutputStream();
 
-			TransformerFactory factory = TransformerFactory.newInstance();
+			TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
 			Transformer transformer = factory.newTransformer();
 			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
 
 			DOMSource source = new DOMSource(doc);
@@ -106,11 +104,11 @@ public class EvaluateAction extends AbstractTracepointAction {
 	@Override
 	public void initializeFromMemento(String data) {
 		Element root = null;
 		DocumentBuilder parser;
 		try {
-			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			parser.setErrorHandler(new DefaultHandler());
 			root = parser.parse(new InputSource(new StringReader(data))).getDocumentElement();
 			fEvalString = root.getAttribute("evalString"); //$NON-NLS-1$
 			if (fEvalString == null)
 				throw new Exception();
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/tracepointactions/TracepointActionManager.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/tracepointactions/TracepointActionManager.java
index 02de3bb747..15b1e2d0df 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/tracepointactions/TracepointActionManager.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/tracepointactions/TracepointActionManager.java
@@ -17,18 +17,18 @@ import java.io.ByteArrayOutputStream;
 import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.Iterator;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 import org.xml.sax.InputSource;
@@ -88,11 +88,11 @@ public class TracepointActionManager {
 			return;
 
 		Element root = null;
 		DocumentBuilder parser;
 		try {
-			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			parser.setErrorHandler(new DefaultHandler());
 			root = parser.parse(new InputSource(new StringReader(actionData))).getDocumentElement();
 
 			NodeList nodeList = root.getChildNodes();
 			int entryCount = nodeList.getLength();
@@ -144,14 +144,12 @@ public class TracepointActionManager {
 	}
 
 	public void saveActionData() {
 		String actionData = ""; //$NON-NLS-1$
 
-		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-		DocumentBuilder docBuilder = null;
 		try {
-			docBuilder = dfactory.newDocumentBuilder();
+			DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document doc = docBuilder.newDocument();
 
 			Element rootElement = doc.createElement("tracepointActionData"); //$NON-NLS-1$
 			doc.appendChild(rootElement);
 
@@ -166,11 +164,11 @@ public class TracepointActionManager {
 
 			}
 
 			ByteArrayOutputStream s = new ByteArrayOutputStream();
 
-			TransformerFactory factory = TransformerFactory.newInstance();
+			TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
 			Transformer transformer = factory.newTransformer();
 			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
 
 			DOMSource source = new DOMSource(doc);
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/tracepointactions/WhileSteppingAction.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/tracepointactions/WhileSteppingAction.java
index 76b796c414..86eee46217 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/tracepointactions/WhileSteppingAction.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/internal/tracepointactions/WhileSteppingAction.java
@@ -17,18 +17,18 @@ package org.eclipse.cdt.dsf.gdb.internal.tracepointactions;
 
 import java.io.ByteArrayOutputStream;
 import java.io.StringReader;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.xml.sax.InputSource;
 import org.xml.sax.helpers.DefaultHandler;
 
@@ -96,25 +96,23 @@ public class WhileSteppingAction extends AbstractTracepointAction {
 
 	@Override
 	public String getMemento() {
 		String collectData = ""; //$NON-NLS-1$
 
-		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-		DocumentBuilder docBuilder = null;
 		try {
-			docBuilder = dfactory.newDocumentBuilder();
+			DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			Document doc = docBuilder.newDocument();
 
 			Element rootElement = doc.createElement("whileSteppingData"); //$NON-NLS-1$
 			rootElement.setAttribute("whileSteppingCount", Integer.toString(fStepCount)); //$NON-NLS-1$
 			rootElement.setAttribute("subActionNames", fSubActionNames); //$NON-NLS-1$
 
 			doc.appendChild(rootElement);
 
 			ByteArrayOutputStream s = new ByteArrayOutputStream();
 
-			TransformerFactory factory = TransformerFactory.newInstance();
+			TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
 			Transformer transformer = factory.newTransformer();
 			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
 
 			DOMSource source = new DOMSource(doc);
@@ -143,11 +141,11 @@ public class WhileSteppingAction extends AbstractTracepointAction {
 	@Override
 	public void initializeFromMemento(String data) {
 		Element root = null;
 		DocumentBuilder parser;
 		try {
-			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 			parser.setErrorHandler(new DefaultHandler());
 			root = parser.parse(new InputSource(new StringReader(data))).getDocumentElement();
 			setStepCount(Integer.parseInt(root.getAttribute("whileSteppingCount"))); //$NON-NLS-1$
 			setSubActionsNames(root.getAttribute("subActionNames")); //$NON-NLS-1$
 			if (fSubActionNames == null)
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.boost/META-INF/MANIFEST.MF b/testsrunner/org.eclipse.cdt.testsrunner.boost/META-INF/MANIFEST.MF
index 87071d35bd..3388a5063b 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.boost/META-INF/MANIFEST.MF
+++ b/testsrunner/org.eclipse.cdt.testsrunner.boost/META-INF/MANIFEST.MF
@@ -1,14 +1,15 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.cdt.testsrunner.boost;singleton:=true
-Bundle-Version: 7.2.0.qualifier
+Bundle-Version: 7.2.100.qualifier
 Bundle-Activator: org.eclipse.cdt.testsrunner.internal.boost.BoostTestsRunnerPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Require-Bundle: org.eclipse.core.runtime;bundle-version="3.5.0",
- org.eclipse.cdt.testsrunner;bundle-version="3.5.0"
+ org.eclipse.cdt.testsrunner;bundle-version="3.5.0",
+ org.eclipse.cdt.core;bundle-version="8.3.0"
 Export-Package: org.eclipse.cdt.testsrunner.internal.boost;x-friends:="org.eclipse.cdt.testsrunner.tests"
 Automatic-Module-Name: org.eclipse.cdt.testsrunner.boost
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.boost/src/org/eclipse/cdt/testsrunner/internal/boost/BoostTestsRunnerProvider.java b/testsrunner/org.eclipse.cdt.testsrunner.boost/src/org/eclipse/cdt/testsrunner/internal/boost/BoostTestsRunnerProvider.java
index 81eb5c60a9..1ebc252dbd 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.boost/src/org/eclipse/cdt/testsrunner/internal/boost/BoostTestsRunnerProvider.java
+++ b/testsrunner/org.eclipse.cdt.testsrunner.boost/src/org/eclipse/cdt/testsrunner/internal/boost/BoostTestsRunnerProvider.java
@@ -17,12 +17,12 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.text.MessageFormat;
 
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
 
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.cdt.testsrunner.launcher.ITestsRunnerProvider;
 import org.eclipse.cdt.testsrunner.model.ITestModelUpdater;
 import org.eclipse.cdt.testsrunner.model.TestingException;
 import org.xml.sax.SAXException;
 
@@ -92,12 +92,11 @@ public class BoostTestsRunnerProvider implements ITestsRunnerProvider {
 	}
 
 	@Override
 	public void run(ITestModelUpdater modelUpdater, InputStream inputStream) throws TestingException {
 		try {
-			SAXParserFactory spf = SAXParserFactory.newInstance();
-			SAXParser sp = spf.newSAXParser();
+			SAXParser sp = XmlProcessorFactoryCdt.createSAXParserWithErrorOnDOCTYPE();
 			sp.parse(inputStream, new BoostXmlLogHandler(modelUpdater));
 
 		} catch (IOException e) {
 			throw new TestingException(
 					getErrorText(BoostTestsRunnerMessages.BoostTestsRunner_io_error_prefix, e.getLocalizedMessage()));
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.qttest/META-INF/MANIFEST.MF b/testsrunner/org.eclipse.cdt.testsrunner.qttest/META-INF/MANIFEST.MF
index 40bce3b8f0..6cc4887827 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.qttest/META-INF/MANIFEST.MF
+++ b/testsrunner/org.eclipse.cdt.testsrunner.qttest/META-INF/MANIFEST.MF
@@ -1,14 +1,15 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.cdt.testsrunner.qttest;singleton:=true
-Bundle-Version: 7.2.0.qualifier
+Bundle-Version: 7.2.100.qualifier
 Bundle-Activator: org.eclipse.cdt.testsrunner.internal.qttest.QtTestsRunnerPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Require-Bundle: org.eclipse.core.runtime;bundle-version="3.5.0",
- org.eclipse.cdt.testsrunner;bundle-version="3.5.0"
+ org.eclipse.cdt.testsrunner;bundle-version="3.5.0",
+ org.eclipse.cdt.core;bundle-version="8.3.0"
 Export-Package: org.eclipse.cdt.testsrunner.internal.qttest;x-friends:="org.eclipse.cdt.testsrunner.tests"
 Automatic-Module-Name: org.eclipse.cdt.testsrunner.qttest
diff --git a/testsrunner/org.eclipse.cdt.testsrunner.qttest/src/org/eclipse/cdt/testsrunner/internal/qttest/QtTestsRunnerProvider.java b/testsrunner/org.eclipse.cdt.testsrunner.qttest/src/org/eclipse/cdt/testsrunner/internal/qttest/QtTestsRunnerProvider.java
index 59fddfc000..7ebfe967ac 100644
--- a/testsrunner/org.eclipse.cdt.testsrunner.qttest/src/org/eclipse/cdt/testsrunner/internal/qttest/QtTestsRunnerProvider.java
+++ b/testsrunner/org.eclipse.cdt.testsrunner.qttest/src/org/eclipse/cdt/testsrunner/internal/qttest/QtTestsRunnerProvider.java
@@ -17,12 +17,12 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.text.MessageFormat;
 
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
 
+import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
 import org.eclipse.cdt.testsrunner.launcher.ITestsRunnerProvider;
 import org.eclipse.cdt.testsrunner.model.ITestModelUpdater;
 import org.eclipse.cdt.testsrunner.model.TestingException;
 import org.xml.sax.SAXException;
 
@@ -109,12 +109,11 @@ public class QtTestsRunnerProvider implements ITestsRunnerProvider {
 	}
 
 	@Override
 	public void run(ITestModelUpdater modelUpdater, InputStream inputStream) throws TestingException {
 		try {
-			SAXParserFactory spf = SAXParserFactory.newInstance();
-			SAXParser sp = spf.newSAXParser();
+			SAXParser sp = XmlProcessorFactoryCdt.createSAXParserWithErrorOnDOCTYPE();
 			sp.parse(inputStream, new QtXmlLogHandler(modelUpdater));
 
 		} catch (IOException e) {
 			throw new TestingException(
 					getErrorText(QtTestsRunnerMessages.QtTestsRunner_io_error_prefix, e.getLocalizedMessage()));

Vulnerable code: Bundle-Version: 2.2.0.qualifier
 org.eclipse.cdt.core;bundle-version="6.5.0",
import javax.xml.parsers.DocumentBuilderFactory;
				DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
				DocumentBuilder db = dbf.newDocumentBuilder();
				e.printStackTrace();
Bundle-Version: 2.1.0.qualifier
 org.eclipse.cdt.core,
import javax.xml.parsers.DocumentBuilderFactory;
			DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
			DocumentBuilder db = dbf.newDocumentBuilder();
Bundle-Version: 1.1.0.qualifier
 org.eclipse.cdt.core
import javax.xml.parsers.DocumentBuilderFactory;
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		DocumentBuilder db = dbf.newDocumentBuilder();
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		DocumentBuilder db = dbf.newDocumentBuilder();
Bundle-Version: 2.2.100.qualifier
 org.eclipse.cdt.core;bundle-version="5.1.0",
					DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
					DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
Bundle-Version: 7.6.200.qualifier
Require-Bundle: org.eclipse.cdt.core;bundle-version="[8.0.0,9.0.0)",
import javax.xml.parsers.DocumentBuilderFactory;

			Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(input);
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
				DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
			Transformer transformer = TransformerFactory.newInstance().newTransformer();
Require-Bundle: org.eclipse.cdt.core;bundle-version="[8.0.0,9.0.0)",
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
			DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
				Transformer transformer = TransformerFactory.newInstance().newTransformer();
			DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
				Transformer transformer = TransformerFactory.newInstance().newTransformer();
			DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
		//				DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
import javax.xml.parsers.DocumentBuilderFactory;
			DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
import javax.xml.parsers.DocumentBuilderFactory;
			DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
			Transformer transformer = TransformerFactory.newInstance().newTransformer();
		document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
   org.eclipse.cdt.ui",
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
			Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
			Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(input);
			return TransformerFactory.newInstance().newTransformer();
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
			Transformer transformer = TransformerFactory.newInstance().newTransformer();
			DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
			doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
			Transformer transformer = TransformerFactory.newInstance().newTransformer();
			DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
							m.put(type.id, new LinkedList<CProjectDescriptionStorageTypeProxy>());
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
			Transformer transformer = TransformerFactory.newInstance().newTransformer();
			DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
			DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
			DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
				DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
				Transformer transformer = TransformerFactory.newInstance().newTransformer();
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
		fListeners = Collections.synchronizedSet(new HashSet<ICdtVariableChangeListener>());
			DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
			DocumentBuilder builder = factory.newDocumentBuilder();
			Transformer transformer = TransformerFactory.newInstance().newTransformer();
import javax.xml.parsers.DocumentBuilderFactory;
			document = DocumentBuilderFactory.newInstance().newDocumentBuilder()
			document = DocumentBuilderFactory.newInstance().newDocumentBuilder()
			document = DocumentBuilderFactory.newInstance().newDocumentBuilder()
			d = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
		TransformerFactory transFactory = TransformerFactory.newInstance();
			d = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
		TransformerFactory transFactory = TransformerFactory.newInstance();
import javax.xml.parsers.DocumentBuilderFactory;
			this.document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(descriptorURL.openStream());
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
		DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
			DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
			Transformer transformer = TransformerFactory.newInstance().newTransformer();
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
			DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
			DocumentBuilder builder = factory.newDocumentBuilder();
			Transformer transformer = TransformerFactory.newInstance().newTransformer();
Bundle-Version: 5.5.300.qualifier
 org.eclipse.cdt.core,
	<version>5.5.300-SNAPSHOT</version>
import javax.xml.parsers.DocumentBuilderFactory;

		Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder()
Require-Bundle: org.eclipse.cdt.core;bundle-version="[8.0.0,9.0.0)",
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
				DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
			DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
			Transformer transformer = TransformerFactory.newInstance().newTransformer();
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
			DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
		} catch (ParserConfigurationException e) {
		} catch (SAXException e) {
		} catch (IOException e) {
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.transform.TransformerFactory;
			final SAXParserFactory factory = SAXParserFactory.newInstance();
			final SAXParser parser = factory.newSAXParser();
			final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
			final DocumentBuilder builder = factory.newDocumentBuilder();
			Transformer transformer = TransformerFactory.newInstance().newTransformer();
import javax.xml.transform.TransformerFactory;
		SAXTransformerFactory factory = (SAXTransformerFactory) TransformerFactory.newInstance();
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
Bundle-Version: 8.8.100.qualifier
Require-Bundle: org.eclipse.cdt.core;bundle-version="[8.0.0,9.0.0)",
		TransformerFactory factory = TransformerFactory.newInstance();
import javax.xml.parsers.DocumentBuilderFactory;
			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder docBuilder = null;
			docBuilder = dfactory.newDocumentBuilder();
			TransformerFactory factory = TransformerFactory.newInstance();
import javax.xml.parsers.DocumentBuilderFactory;
			document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
			DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
import javax.xml.parsers.DocumentBuilderFactory;
			document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
			DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
import javax.xml.parsers.DocumentBuilderFactory;
			document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
			DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
import javax.xml.parsers.DocumentBuilderFactory;
			document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
				DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
 org.eclipse.cdt.core;bundle-version="[8.0.0,9.0.0)",
import javax.xml.parsers.DocumentBuilderFactory;
			DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
			DocumentBuilder docBuilder = null;
				docBuilder = dfactory.newDocumentBuilder();
				TransformerFactory factory = TransformerFactory.newInstance();
			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
import javax.xml.parsers.DocumentBuilderFactory;
		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder docBuilder = null;
			docBuilder = dfactory.newDocumentBuilder();
			TransformerFactory factory = TransformerFactory.newInstance();
			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
import javax.xml.parsers.DocumentBuilderFactory;
		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder docBuilder = null;
			docBuilder = dfactory.newDocumentBuilder();
			TransformerFactory factory = TransformerFactory.newInstance();
			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
import javax.xml.parsers.DocumentBuilderFactory;
		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder docBuilder = null;
			docBuilder = dfactory.newDocumentBuilder();
			TransformerFactory factory = TransformerFactory.newInstance();
			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
import javax.xml.parsers.DocumentBuilderFactory;
			DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
			DocumentBuilder docBuilder = null;
				docBuilder = dfactory.newDocumentBuilder();
				TransformerFactory factory = TransformerFactory.newInstance();
			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
import javax.xml.parsers.DocumentBuilderFactory;
			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder docBuilder = null;
			docBuilder = dfactory.newDocumentBuilder();
			TransformerFactory factory = TransformerFactory.newInstance();
import javax.xml.parsers.DocumentBuilderFactory;
				document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
			DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Bundle-Version: 1.3.100.qualifier
 org.eclipse.cdt.core,
import javax.xml.parsers.DocumentBuilderFactory;
		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder docBuilder = null;
			docBuilder = dfactory.newDocumentBuilder();
			TransformerFactory factory = TransformerFactory.newInstance();
			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder docBuilder = null;
			docBuilder = dfactory.newDocumentBuilder();
			TransformerFactory factory = TransformerFactory.newInstance();
			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
 org.eclipse.cdt.core,
import javax.xml.parsers.DocumentBuilderFactory;
		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder docBuilder = null;
			docBuilder = dfactory.newDocumentBuilder();
			TransformerFactory factory = TransformerFactory.newInstance();
			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
import javax.xml.parsers.DocumentBuilderFactory;
		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder docBuilder = null;
			docBuilder = dfactory.newDocumentBuilder();
			TransformerFactory factory = TransformerFactory.newInstance();
			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
import javax.xml.parsers.DocumentBuilderFactory;
			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder docBuilder = null;
			docBuilder = dfactory.newDocumentBuilder();
			TransformerFactory factory = TransformerFactory.newInstance();
import javax.xml.parsers.DocumentBuilderFactory;
		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder docBuilder = null;
			docBuilder = dfactory.newDocumentBuilder();
			TransformerFactory factory = TransformerFactory.newInstance();
			parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Bundle-Version: 7.2.0.qualifier
 org.eclipse.cdt.testsrunner;bundle-version="3.5.0"
import javax.xml.parsers.SAXParserFactory;
			SAXParserFactory spf = SAXParserFactory.newInstance();
			SAXParser sp = spf.newSAXParser();
Bundle-Version: 7.2.0.qualifier
 org.eclipse.cdt.testsrunner;bundle-version="3.5.0"
import javax.xml.parsers.SAXParserFactory;
			SAXParserFactory spf = SAXParserFactory.newInstance();
			SAXParser sp = spf.newSAXParser();
Fixed code: Bundle-Version: 2.2.100.qualifier
 org.eclipse.cdt.core;bundle-version="8.3.0",
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
import org.eclipse.core.runtime.Platform;
				DocumentBuilder db = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
				Platform.getLog(AutotoolsConfigurationManager.class)
						.error("Error while parsing .autotools file in project", e); //$NON-NLS-1$
Bundle-Version: 2.1.100.qualifier
 org.eclipse.cdt.core;bundle-version="8.3.0",
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			DocumentBuilder db = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
Bundle-Version: 1.1.100.qualifier
 org.eclipse.cdt.core;bundle-version="8.3.0"
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
		DocumentBuilder db = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
		DocumentBuilder db = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
Bundle-Version: 2.2.200.qualifier
 org.eclipse.cdt.core;bundle-version="8.3.0",
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
					DocumentBuilderFactory factory = XmlProcessorFactoryCdt
							.createDocumentBuilderFactoryIgnoringDOCTYPE();
						AutotoolsPlugin.log(saxEx);
					DocumentBuilderFactory factory = XmlProcessorFactoryCdt
							.createDocumentBuilderFactoryIgnoringDOCTYPE();
Bundle-Version: 7.6.300.qualifier
Require-Bundle: org.eclipse.cdt.core;bundle-version="[8.3.0,9.0.0)",
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			Document document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().parse(input);
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
				DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
					.newTransformer();
Require-Bundle: org.eclipse.cdt.core;bundle-version="[8.3.0,9.0.0)",
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
				Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
						.newTransformer();
			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
				Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE().newTransformer();
			DocumentBuilder parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
		//				DocumentBuilder parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			DocumentBuilder parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			DocumentBuilder parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
					.newTransformer();
		document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().newDocument();
   org.eclipse.cdt.ui,
   org.eclipse.cdt.autotools.core,
   org.eclipse.cdt.autotools.tests,
   org.eclipse.cdt.autotools.ui,
   org.eclipse.cdt.autotools.ui.tests,
   org.eclipse.cdt.core.tests,
   org.eclipse.cdt.debug.ui,
   org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui,
   org.eclipse.cdt.testsrunner.boost,
   org.eclipse.cdt.testsrunner.qttest",
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			Document doc = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().newDocument();
			Document document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().parse(input);
			return XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE().newTransformer();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
					.newTransformer();
			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
import org.xml.sax.SAXException;
			doc = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().newDocument();
			Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
					.newTransformer();
			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
							m.put(type.id, new LinkedList<>());
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
					.newTransformer();
			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
				DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
				Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
						.newTransformer();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
		fListeners = Collections.synchronizedSet(new HashSet<>());
			DocumentBuilder parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
					.newTransformer();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE()
			document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE()
			document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE()
			d = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().newDocument();
		TransformerFactory transFactory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
			d = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().newDocument();
		TransformerFactory transFactory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			this.document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE()
					.parse(descriptorURL.openStream());
/*******************************************************************************
 *  Copyright (c) 2023 Joerg Kubitz and others.
 *
 *  This program and the accompanying materials
 *  are made available under the terms of the Eclipse Public License 2.0
 *  which accompanies this distribution, and is available at
 *  https://www.eclipse.org/legal/epl-2.0/
 *
 *  SPDX-License-Identifier: EPL-2.0
 *******************************************************************************/
package org.eclipse.cdt.internal.core;

import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.transform.TransformerFactory;

import org.xml.sax.SAXException;
import org.xml.sax.SAXNotRecognizedException;
import org.xml.sax.SAXNotSupportedException;

/**
 * XML processing which prohibits external entities.
 *
 * Copied from https://github.com/eclipse-jdt/eclipse.jdt.debug/blob/1d59af8a6a37f9cf8143d73d94e4c1c3555363d6/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/XmlProcessorFactoryJdtDebug.java
 *
 * @see <a href="https://rules.sonarsource.com/java/RSPEC-2755/">RSPEC-2755</a>
 */
public class XmlProcessorFactoryCdt {
	private XmlProcessorFactoryCdt() {
		// static Utility only
	}

	private static final DocumentBuilderFactory DOCUMENT_BUILDER_FACTORY_ERROR_ON_DOCTYPE = createDocumentBuilderFactoryWithErrorOnDOCTYPE();
	private static final DocumentBuilderFactory DOCUMENT_BUILDER_FACTORY_IGNORING_DOCTYPE = createDocumentBuilderFactoryIgnoringDOCTYPE();
	private static final SAXParserFactory SAX_FACTORY_ERROR_ON_DOCTYPE = createSAXFactoryWithErrorOnDOCTYPE(false);
	private static final SAXParserFactory SAX_FACTORY_ERROR_ON_DOCTYPE_NS = createSAXFactoryWithErrorOnDOCTYPE(true);
	private static final SAXParserFactory SAX_FACTORY_IGNORING_DOCTYPE = createSAXFactoryIgnoringDOCTYPE();

	/**
	 * Creates TransformerFactory which throws TransformerException when detecting external entities.
	 *
	 * @return javax.xml.transform.TransformerFactory
	 */
	public static TransformerFactory createTransformerFactoryWithErrorOnDOCTYPE() {
		TransformerFactory factory = TransformerFactory.newInstance();
		// prohibit the use of all protocols by external entities:
		factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); //$NON-NLS-1$
		factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, ""); //$NON-NLS-1$
		return factory;
	}

	/**
	 * Creates DocumentBuilderFactory which throws SAXParseException when detecting external entities. It's magnitudes faster to call
	 * {@link #createDocumentBuilderWithErrorOnDOCTYPE()}.
	 *
	 * @return javax.xml.parsers.DocumentBuilderFactory
	 */
	public static synchronized DocumentBuilderFactory createDocumentBuilderFactoryWithErrorOnDOCTYPE() {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		// completely disable DOCTYPE declaration:
		try {
			factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); //$NON-NLS-1$
		} catch (ParserConfigurationException e) {
			throw new RuntimeException(e.getMessage(), e);
		}
		return factory;
	}

	/**
	 * Creates DocumentBuilderFactory which ignores external entities. It's magnitudes faster to call {@link #createDocumentBuilderIgnoringDOCTYPE()}.
	 *
	 * @return javax.xml.parsers.DocumentBuilderFactory
	 */
	public static synchronized DocumentBuilderFactory createDocumentBuilderFactoryIgnoringDOCTYPE() {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		try {
			// completely disable external entities declarations:
			factory.setFeature("http://xml.org/sax/features/external-general-entities", false); //$NON-NLS-1$
			factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); //$NON-NLS-1$
		} catch (ParserConfigurationException e) {
			throw new RuntimeException(e.getMessage(), e);
		}
		return factory;
	}

	/**
	 * Creates DocumentBuilder which throws SAXParseException when detecting external entities. The builder is not thread safe.
	 *
	 * @return javax.xml.parsers.DocumentBuilder
	 * @throws ParserConfigurationException
	 */
	public static DocumentBuilder createDocumentBuilderWithErrorOnDOCTYPE() throws ParserConfigurationException {
		return DOCUMENT_BUILDER_FACTORY_ERROR_ON_DOCTYPE.newDocumentBuilder();
	}

	/**
	 * Creates DocumentBuilder which ignores external entities. The builder is not thread safe.
	 *
	 * @return javax.xml.parsers.DocumentBuilder
	 * @throws ParserConfigurationException
	 */
	public static DocumentBuilder createDocumentBuilderIgnoringDOCTYPE() throws ParserConfigurationException {
		return DOCUMENT_BUILDER_FACTORY_IGNORING_DOCTYPE.newDocumentBuilder();
	}

	/**
	 * Creates DocumentBuilderFactory which throws SAXParseException when detecting external entities.
	 *
	 * @return javax.xml.parsers.DocumentBuilderFactory
	 */
	public static SAXParserFactory createSAXFactoryWithErrorOnDOCTYPE() {
		SAXParserFactory f = SAXParserFactory.newInstance();
		try {
			// force org.xml.sax.SAXParseException for any DOCTYPE:
			f.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); //$NON-NLS-1$
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
		return f;
	}

	private static synchronized SAXParserFactory createSAXFactoryWithErrorOnDOCTYPE(boolean awareness) {
		SAXParserFactory f = SAXParserFactory.newInstance();
		f.setNamespaceAware(awareness);
		try {
			// force org.xml.sax.SAXParseException for any DOCTYPE:
			f.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); //$NON-NLS-1$
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
		return f;
	}

	private static synchronized SAXParserFactory createSAXFactoryIgnoringDOCTYPE() {
		SAXParserFactory f = SAXParserFactory.newInstance();
		try {
			// ignore DOCTYPE:
			f.setFeature("http://xml.org/sax/features/external-general-entities", false); //$NON-NLS-1$
			f.setFeature("http://xml.org/sax/features/external-parameter-entities", false); //$NON-NLS-1$
			f.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); //$NON-NLS-1$
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
		return f;
	}

	/**
	 * Creates SAXParser which throws SAXParseException when detecting external entities.
	 *
	 * @return javax.xml.parsers.SAXParser
	 */

	public static SAXParser createSAXParserWithErrorOnDOCTYPE() throws ParserConfigurationException, SAXException {
		return createSAXParserWithErrorOnDOCTYPE(false);
	}

	/**
	 * Creates SAXParser which throws SAXParseException when detecting external entities.
	 *
	 * @param namespaceAware
	 *            parameter for SAXParserFactory
	 *
	 * @return javax.xml.parsers.SAXParser
	 */
	public static SAXParser createSAXParserWithErrorOnDOCTYPE(boolean namespaceAware)
			throws ParserConfigurationException, SAXException {
		if (namespaceAware) {
			return SAX_FACTORY_ERROR_ON_DOCTYPE_NS.newSAXParser();
		}
		return SAX_FACTORY_ERROR_ON_DOCTYPE.newSAXParser();
	}

	/**
	 * Creates SAXParser which does not throw Exception when detecting external entities but ignores them.
	 *
	 * @return javax.xml.parsers.SAXParser
	 */
	public static SAXParser createSAXParserIgnoringDOCTYPE()
			throws ParserConfigurationException, SAXNotRecognizedException, SAXNotSupportedException, SAXException {
		SAXParser parser = SAX_FACTORY_IGNORING_DOCTYPE.newSAXParser();
		parser.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, ""); //$NON-NLS-1$
		parser.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, ""); //$NON-NLS-1$
		return parser;
	}
}
		DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
					.newTransformer();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			DocumentBuilder parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
					.newTransformer();
Bundle-Version: 5.5.400.qualifier
 org.eclipse.cdt.core;bundle-version="8.3.0",
	<version>5.5.400-SNAPSHOT</version>
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
		Document document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE()
Require-Bundle: org.eclipse.cdt.core;bundle-version="[8.3.0,9.0.0)",
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
				DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
					.newTransformer();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
import org.eclipse.cdt.ui.CUIPlugin;
			DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
		} catch (Exception e) {
			CUIPlugin.log("Failed to load helpbook in " + pluginId, e); //$NON-NLS-1$
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			final SAXParser parser = XmlProcessorFactoryCdt.createSAXParserWithErrorOnDOCTYPE();
			final DocumentBuilder builder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			Transformer transformer = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE()
					.newTransformer();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
		SAXTransformerFactory factory = (SAXTransformerFactory) XmlProcessorFactoryCdt
				.createTransformerFactoryWithErrorOnDOCTYPE();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
		DocumentBuilderFactory factory = XmlProcessorFactoryCdt.createDocumentBuilderFactoryWithErrorOnDOCTYPE();
Bundle-Version: 8.8.200.qualifier
Require-Bundle: org.eclipse.cdt.core;bundle-version="[8.3.0,9.0.0)",
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
		TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().newDocument();
			DocumentBuilder parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().newDocument();
			DocumentBuilder parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().newDocument();
			DocumentBuilder parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().newDocument();
				DocumentBuilder parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 org.eclipse.cdt.core;bundle-version="[8.3.0,9.0.0)",
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
				DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
				TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
				DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
				TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
		if (data == null || data.isBlank()) {
			// An empty string will cause a sax parser error below
			return;
		}

			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
				document = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE().newDocument();
			DocumentBuilder parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
Bundle-Version: 1.3.200.qualifier
 org.eclipse.cdt.core;bundle-version="8.3.0",
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
 org.eclipse.cdt.core;bundle-version="8.3.0",
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			DocumentBuilder docBuilder = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
			TransformerFactory factory = XmlProcessorFactoryCdt.createTransformerFactoryWithErrorOnDOCTYPE();
			parser = XmlProcessorFactoryCdt.createDocumentBuilderWithErrorOnDOCTYPE();
Bundle-Version: 7.2.100.qualifier
 org.eclipse.cdt.testsrunner;bundle-version="3.5.0",
 org.eclipse.cdt.core;bundle-version="8.3.0"
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			SAXParser sp = XmlProcessorFactoryCdt.createSAXParserWithErrorOnDOCTYPE();
Bundle-Version: 7.2.100.qualifier
 org.eclipse.cdt.testsrunner;bundle-version="3.5.0",
 org.eclipse.cdt.core;bundle-version="8.3.0"
import org.eclipse.cdt.internal.core.XmlProcessorFactoryCdt;
			SAXParser sp = XmlProcessorFactoryCdt.createSAXParserWithErrorOnDOCTYPE();