private static Item parseItem(Node itemNode, Channel channel) {
        String title = null;
        String description = null;
        String link = null;

        NodeList itemNodes = itemNode.getChildNodes();
        int numItemNodes = itemNodes.getLength();

        for (int i = 0; i < numItemNodes; i++) {
            Node child = itemNodes.item(i);

            switch (child.getNodeType()) {
                case Node.ELEMENT_NODE:
                    String childName = child.getNodeName();
                    if (childName.equals("title")) {
                        Node textNode = child.getFirstChild();
                        title = textNode.getNodeValue();
                    } else if (childName.equals("description")) {
                        Node textNode = child.getFirstChild();
                        description = textNode.getNodeValue();
                    } else if (childName.equals("link")) {
                        Node textNode = child.getFirstChild();
                        link = textNode.getNodeValue();
                    }
                    break;
            }
        }

        if ((title != null) && (link != null)) {
            if (description == null) {
                return (new Item(channel, title, link));
            } else {
                return (new Item(channel, title, link, description));
            }
        } else {
            cat.error("Channel Error: " + channel.getURI());
            cat.error("Insufficient information to build an item.");

            return (null);
        }
    }