GUACAMOLE-497: Fall back to qualified name of XML element if SAX parser does not provide local name.

This commit is contained in:
Michael Jumper
2018-02-01 19:01:29 -08:00
parent c6aa790b41
commit 37f7df804d

View File

@@ -84,6 +84,10 @@ public class DocumentHandler extends DefaultHandler {
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// If the SAX implementation does not provide the local name, the
// qualified name should be used instead
String name = localName.isEmpty() ? qName : localName;
// Get current state
DocumentHandlerState current = getCurrentState();
@@ -94,7 +98,7 @@ public class DocumentHandler extends DefaultHandler {
if (current == null) {
// Validate element name
if (!localName.equals(rootElementName))
if (!name.equals(rootElementName))
throw new SAXException("Root element must be '" + rootElementName + "'");
handler = root;
@@ -103,12 +107,12 @@ public class DocumentHandler extends DefaultHandler {
// Otherwise, get handler from parent
else {
TagHandler parent_handler = current.getTagHandler();
handler = parent_handler.childElement(localName);
handler = parent_handler.childElement(name);
}
// If no handler returned, the element was not expected
if (handler == null)
throw new SAXException("Unexpected element: '" + localName + "'");
throw new SAXException("Unexpected element: '" + name + "'");
// Initialize handler
handler.init(attributes);