private static ExternalFinderItem generateFinderItem(Node item) {
        if (!item.hasChildNodes()) {
            return null;
        }
        final NodeList childNodes = item.getChildNodes();

        final ExternalFinderItem finderItem = new ExternalFinderItem();

        // retrive popup
        if (item.hasAttributes()) {
            Node nopopup = item.getAttributes().getNamedItem("nopopup");
            if (nopopup != null) {
                String value = nopopup.getTextContent();
                if (value.equals("true")) {
                    finderItem.setNopopup(true);
                }
            }
        }

        for (int i = 0, n = childNodes.getLength(); i < n; i++) {
            final Node childNode = childNodes.item(i);

            final String nodeName = childNode.getNodeName();
            if (nodeName.equals("name")) {
                finderItem.setName(childNode.getTextContent());
            } else if (nodeName.equals("url")) {
                finderItem.getURLs().add(generateFinderURL(childNode));
            } else if (nodeName.equals("command")) {
                finderItem.getCommands().add(generateFinderCommand(childNode));
            } else if (nodeName.equals("keystroke")) {
                KeyStroke keyStroke = KeyStroke.getKeyStroke(childNode.getTextContent());
                finderItem.setKeystroke(keyStroke);
            }
        }

        return finderItem;
    }