public void startElement(String uri, String localName, String qName, Attributes attrs)
     throws SAXException {
   if (equalsOrSuffix(qName, "FirewallService")) {
     inFirewallService = true;
   } else if (equalsOrSuffix(qName, "FirewallRule")) {
     inFirewallRule = true;
     firewallRuleHandler.startElement(uri, localName, qName, attrs);
   }
 }
  @Override
  public void endElement(String uri, String localName, String qName) throws SAXException {
    if (equalsOrSuffix(qName, "FirewallService")) {
      inFirewallService = false;
    } else if (equalsOrSuffix(qName, "FirewallRule")) {
      builder.firewallRule(firewallRuleHandler.getResult());
      inFirewallRule = false;
    } else if (equalsOrSuffix(qName, "isEnabled")) {
      if (inFirewallService) {
        String current = currentOrNull(currentText);
        if (current != null) {
          builder.isEnabled(Boolean.parseBoolean(current));
        }
      }
    }

    if (inFirewallRule) {
      firewallRuleHandler.endElement(uri, localName, qName);
    }
    currentText = new StringBuilder();
  }
 @Override
 public void characters(char ch[], int start, int length) {
   currentText.append(ch, start, length);
   firewallRuleHandler.characters(ch, start, length);
 }