code: public static boolean matchesQName(QName regQName, QName targetQName, boolean ignorePrefix) {
          if (regQName == null || targetQName == null) {
              return false;
          }
          if ("*".equals(getQNameString(regQName))) {
              return true;
          }
          // if the name space or the prefix is not equal, just return false;
          if (!(regQName.getNamespaceURI().equals(targetQName.getNamespaceURI())) ||
              !(ignorePrefix || regQName.getPrefix().equals(targetQName.getPrefix()))) {
              return false;
          }
  
          if (regQName.getLocalPart().contains("*")) {
              return Pattern.matches(mapPattern(regQName.getLocalPart()), targetQName.getLocalPart());
          } else if (regQName.getLocalPart().equals(targetQName.getLocalPart())) {
              return true;
          }
          return false;
      }
docs: Check whether the regQName matches the targetQName
  
  Only the localPart of the regQName supports the * match, it means only the name space and prefix is all matched, then
  the localPart will be compared considering the *
  
  When the ignorePrefix is true, the prefix will be ignored.
  
  @param regQName
  @param targetQName
  @param ignorePrefix
  @return