Example usage for org.jdom2 Element getTextTrim

List of usage examples for org.jdom2 Element getTextTrim

Introduction

In this page you can find the example usage for org.jdom2 Element getTextTrim.

Prototype

public String getTextTrim() 

Source Link

Document

Returns the textual content of this element with all surrounding whitespace removed.

Usage

From source file:de.nava.informa.parsers.RSS_1_0_Parser.java

License:Open Source License

public ChannelIF parse(ChannelBuilderIF cBuilder, Element root) throws ParseException {
    if (cBuilder == null) {
        throw new RuntimeException("Without builder no channel can " + "be created.");
    }/* ww  w.j a  v  a  2s.c  o  m*/
    Date dateParsed = new Date();
    Namespace defNS = ParserUtils.getDefaultNS(root);
    if (defNS == null) {
        defNS = Namespace.NO_NAMESPACE;
        logger.info("No default namespace found.");
    }

    // RSS 1.0 Dublin Core Module namespace
    Namespace dcNS = ParserUtils.getNamespace(root, "dc");
    // fall back to default name space (for retrieving descriptions)
    if (dcNS == null) {
        dcNS = defNS;
    }

    // RSS 1.0 Syndication Module namespace
    Namespace syNS = ParserUtils.getNamespace(root, "sy");

    // RSS 1.0 Aggregation Module namespace
    Namespace agNS = ParserUtils.getNamespace(root, "ag");

    // RSS 1.0 Administration Module namespace
    Namespace adminNS = ParserUtils.getNamespace(root, "admin");

    // RSS 1.0 DCTerms Module namespace
    Namespace dctermsNS = ParserUtils.getNamespace(root, "dcterms");

    // RSS 1.0 Annotation Module namespace
    Namespace annotateNS = ParserUtils.getNamespace(root, "annotate");

    // RSS091 Module namespace
    Namespace rss091NS = ParserUtils.getNamespace(root, "rss091");

    // Content namespace
    Namespace contentNS = ParserUtils.getNamespace(root, "content");

    ParserUtils.matchCaseOfChildren(root, new String[] { "channel", "item", "image", "textinput" });

    // Get the channel element (only one occurs)
    Element channel = root.getChild("channel", defNS);
    if (channel == null) {
        logger.warn("Channel element could not be retrieved from feed.");
        throw new ParseException("No channel element found in feed.");
    }

    // ----------------------- read in channel information

    ParserUtils.matchCaseOfChildren(channel,
            new String[] { "title", "description", "link", "creator", "managingEditor", "publisher",
                    "errorReportsTo", "webMaster", "language", "rights", "copyright", "rating", "date",
                    "issued", "pubdate", "lastBuildDate", "modified", "generatorAgent", "updatePeriod",
                    "updateFrequency", "updateBase" });

    // title element
    ChannelIF chnl = cBuilder.createChannel(channel, channel.getChildTextTrim("title", defNS));

    // set channel format
    chnl.setFormat(ChannelFormat.RSS_1_0);

    // description element
    chnl.setDescription(channel.getChildTextTrim("description", defNS));

    // link element
    chnl.setSite(ParserUtils.getURL(channel.getChildTextTrim("link", defNS)));

    // creator element
    Element creator = channel.getChild("creator", dcNS);
    if (creator == null) {
        creator = channel.getChild("managingEditor", rss091NS);
    }
    if (creator != null) {
        chnl.setCreator(creator.getTextTrim());
    }

    // publisher element
    String publisher = channel.getChildTextTrim("publisher", dcNS);
    if (publisher == null) {
        Element elErrorReportsTo = channel.getChild("errorReportsTo", adminNS);
        if (elErrorReportsTo != null) {
            publisher = elErrorReportsTo.getAttributeValue("resource",
                    ParserUtils.getNamespace(elErrorReportsTo, "rdf"));
        }
    }
    if (publisher == null) {
        publisher = channel.getChildTextTrim("webMaster", rss091NS);
    }
    chnl.setPublisher(publisher);

    // language element
    Element language = channel.getChild("language", dcNS);
    if (language == null) {
        language = channel.getChild("language", rss091NS);
    }
    if (language != null) {
        chnl.setLanguage(language.getTextTrim());
    }

    // rights element
    Element copyright = channel.getChild("rights", dcNS);
    if (copyright == null) {
        copyright = channel.getChild("copyright", rss091NS);
    }
    if (copyright != null) {
        chnl.setCopyright(copyright.getTextTrim());
    }

    // 0..1 Rating element
    Element rating = channel.getChild("rating", rss091NS);
    if (rating != null) {
        chnl.setRating(rating.getTextTrim());
    }

    // 0..1 Docs element
    // use namespace URI
    chnl.setDocs(defNS.getURI());

    // 0..1 pubDate element
    Element pubDate = channel.getChild("date", dcNS);
    if (pubDate == null) {
        pubDate = channel.getChild("issued", dctermsNS);
    }
    if (pubDate == null) {
        pubDate = channel.getChild("pubdate", rss091NS);
    }
    if (pubDate != null) {
        chnl.setPubDate(ParserUtils.getDate(pubDate.getTextTrim()));
    }

    // 0..1 lastBuildDate element
    Element lastBuildDate = channel.getChild("lastBuildDate");
    if (lastBuildDate == null) {
        lastBuildDate = channel.getChild("modified", dctermsNS);
    }
    if (lastBuildDate == null) {
        lastBuildDate = channel.getChild("lastBuildDate", rss091NS);
    }
    if (lastBuildDate != null) {
        chnl.setLastBuildDate(ParserUtils.getDate(lastBuildDate.getTextTrim()));
    }

    // RSS 1.0 Administration Module support

    // 0..1 generator element
    Element elGenerator = channel.getChild("generatorAgent", adminNS);
    if (elGenerator != null) {
        Attribute generator = elGenerator.getAttribute("resource",
                ParserUtils.getNamespace(elGenerator, "rdf"));
        if (generator != null) {
            chnl.setGenerator(generator.getValue());
        }
    }

    // RSS 1.0 Syndication Module support

    // 0..1 update period element
    Element updatePeriod = channel.getChild("updatePeriod", syNS);
    if (updatePeriod != null) {
        try {
            ChannelUpdatePeriod channelUpdatePeriod = ChannelUpdatePeriod
                    .valueFromText(updatePeriod.getTextTrim());
            chnl.setUpdatePeriod(channelUpdatePeriod);
        } catch (IllegalArgumentException ex) {
            logger.warn(updatePeriod.getTextTrim(), ex);
        }
    }

    // 0..1 update frequency element
    Element updateFrequency = channel.getChild("updateFrequency", syNS);
    if (updateFrequency != null) {
        chnl.setUpdateFrequency((new Integer(updateFrequency.getTextTrim())).intValue());
    }

    // 0..1 update base element
    Element updateBase = channel.getChild("updateBase", syNS);
    if (updateBase != null) {
        chnl.setUpdateBase(ParserUtils.getDate(updateBase.getTextTrim()));
    }

    if ((updatePeriod != null) && updateFrequency != null) {
        int ttl = getTTL(chnl.getUpdatePeriod(), chnl.getUpdateFrequency());
        chnl.setTtl(ttl);
    }

    // item elements
    List items = root.getChildren("item", defNS);
    Iterator i = items.iterator();
    while (i.hasNext()) {
        Element item = (Element) i.next();

        ParserUtils.matchCaseOfChildren(item, new String[] { "title", "link", "encoded", "description",
                "creator", "subject", "date", "sourceURL", "source", "timestamp", "reference" });

        // get title element
        Element elTitle = item.getChild("title", defNS);
        String strTitle = "<No Title>";
        if (elTitle != null) {
            strTitle = elTitle.getTextTrim();
        }
        if (logger.isDebugEnabled()) {
            logger.debug("Item element found (" + strTitle + ").");
        }

        // get link element
        Element elLink = item.getChild("link", defNS);
        String strLink = "";
        if (elLink != null) {
            strLink = elLink.getTextTrim();
        }

        // get description element
        Element elDesc = item.getChild("encoded", contentNS);
        if (elDesc == null) {
            elDesc = item.getChild("description", defNS);
        }
        if (elDesc == null) {
            elDesc = item.getChild("description", dcNS);
        }
        String strDesc = "";
        if (elDesc != null) {
            strDesc = elDesc.getTextTrim();
        }

        // generate new RSS item (link to article)
        ItemIF rssItem = cBuilder.createItem(item, chnl, strTitle, strDesc, ParserUtils.getURL(strLink));
        rssItem.setFound(dateParsed);

        // get creator element
        Element elCreator = item.getChild("creator", dcNS);
        if (elCreator != null) {
            rssItem.setCreator(elCreator.getTextTrim());
        }

        // get subject element
        Element elSubject = item.getChild("subject", dcNS);
        if (elSubject != null) {
            // TODO: Mulitple subject elements not handled currently
            rssItem.setSubject(elSubject.getTextTrim());
        }

        // get date element
        Element elDate = item.getChild("date", dcNS);
        if (elDate != null) {
            rssItem.setDate(ParserUtils.getDate(elDate.getTextTrim()));
        }

        // get source element - default to Aggregation module, then try Dublin Core
        String sourceName = null;
        String sourceLocation = null;
        Date sourceTimestamp = null;

        Element elSourceURL = item.getChild("sourceURL", agNS);
        if (elSourceURL == null) { //  No Aggregation module - try Dublin Core
            elSourceURL = item.getChild("source", dcNS);
            if (elSourceURL != null) {
                sourceLocation = elSourceURL.getTextTrim();
                sourceName = "Source";
            }
        } else { // Aggregation module
            sourceLocation = elSourceURL.getTextTrim();
            Element elSourceName = item.getChild("source", agNS);
            if (elSourceName != null) {
                sourceName = elSourceName.getTextTrim();
            }
            Element elSourceTimestamp = item.getChild("timestamp", agNS);
            if (elSourceTimestamp != null) {
                sourceTimestamp = ParserUtils.getDate(elSourceTimestamp.getTextTrim());
            }
        }

        if (sourceLocation != null) {
            ItemSourceIF itemSource = cBuilder.createItemSource(rssItem, sourceName, sourceLocation,
                    sourceTimestamp);
            rssItem.setSource(itemSource);
        }

        // comments element - use Annotation module
        Element elReference = item.getChild("reference", annotateNS);
        if (elReference != null) {
            Attribute resource = elReference.getAttribute("resource",
                    ParserUtils.getNamespace(elReference, "rdf"));
            if (resource != null) {
                URL resourceURL = ParserUtils.getURL(resource.getValue());
                if (resourceURL != null) {
                    rssItem.setComments(resourceURL);
                }
            }
        }

    }

    // image element
    Element image = root.getChild("image", defNS);
    if (image != null) {

        ParserUtils.matchCaseOfChildren(image,
                new String[] { "title", "url", "link", "width", "height", "description" });

        ImageIF rssImage = cBuilder.createImage(image.getChildTextTrim("title", defNS),
                ParserUtils.getURL(image.getChildTextTrim("url", defNS)),
                ParserUtils.getURL(image.getChildTextTrim("link", defNS)));
        Element imgWidth = image.getChild("width", defNS);
        if (imgWidth != null) {
            try {
                rssImage.setWidth(Integer.parseInt(imgWidth.getTextTrim()));
            } catch (NumberFormatException e) {
                logger.warn(e);
            }
        }
        Element imgHeight = image.getChild("height", defNS);
        if (imgHeight != null) {
            try {
                rssImage.setHeight(Integer.parseInt(imgHeight.getTextTrim()));
            } catch (NumberFormatException e) {
                logger.warn(e);
            }
        }
        Element imgDescr = image.getChild("description", defNS);
        if (imgDescr != null) {
            rssImage.setDescription(imgDescr.getTextTrim());
        }
        chnl.setImage(rssImage);
    }

    // textinput element
    Element txtinp = root.getChild("textinput", defNS);
    if (txtinp != null) {

        ParserUtils.matchCaseOfChildren(image, new String[] { "title", "description", "name", "link" });

        String tiTitle = null;
        if (txtinp.getChild("title", defNS) != null) {
            tiTitle = txtinp.getChild("title", defNS).getTextTrim();
        }
        String tiDescr = null;
        if (txtinp.getChild("description", defNS) != null) {
            tiDescr = txtinp.getChild("description", defNS).getTextTrim();
        }
        String tiName = null;
        if (txtinp.getChild("name", defNS) != null) {
            tiName = txtinp.getChild("name", defNS).getTextTrim();
        }
        URL tiLink = null;
        if (txtinp.getChild("link", defNS) != null) {
            tiLink = ParserUtils.getURL(txtinp.getChild("link", defNS).getTextTrim());
        }
        TextInputIF rssTextInput = cBuilder.createTextInput(tiTitle, tiDescr, tiName, tiLink);
        chnl.setTextInput(rssTextInput);
    }

    chnl.setLastUpdated(dateParsed);

    return chnl;
}

From source file:de.nava.informa.parsers.RSS_2_0_Parser.java

License:Open Source License

/**
 * @see de.nava.informa.core.ChannelParserIF#parse(de.nava.informa.core.ChannelBuilderIF, org.jdom2.Element)
 */// ww  w .  ja v  a 2  s . c  o  m
public ChannelIF parse(ChannelBuilderIF cBuilder, Element root) throws ParseException {
    if (cBuilder == null) {
        throw new RuntimeException("Without builder no channel can be created.");
    }
    Date dateParsed = new Date();
    logger.debug("start parsing.");

    Namespace defNS = ParserUtils.getDefaultNS(root);
    if (defNS == null) {
        defNS = Namespace.NO_NAMESPACE;
        logger.info("No default namespace found.");
    }
    Namespace dcNS = ParserUtils.getNamespace(root, "dc");
    // fall back to default name space
    if (dcNS == null) {
        dcNS = defNS;
    }

    // Content namespace
    Namespace contentNS = ParserUtils.getNamespace(root, "content");
    // fall back to default name space
    if (contentNS == null) {
        contentNS = defNS;
    }

    ParserUtils.matchCaseOfChildren(root, "channel");

    // Get the channel element (only one occurs)
    Element channel = root.getChild("channel", defNS);
    if (channel == null) {
        logger.warn("Channel element could not be retrieved from feed.");
        throw new ParseException("No channel element found in feed.");
    }

    // --- read in channel information

    ParserUtils.matchCaseOfChildren(channel,
            new String[] { "title", "description", "link", "language", "item", "image", "textinput",
                    "copyright", "rating", "docs", "generator", "pubDate", "lastBuildDate", "category",
                    "managingEditor", "webMaster", "cloud" });

    // 1 title element
    ChannelIF chnl = cBuilder.createChannel(channel, channel.getChildTextTrim("title", defNS));

    // set channel format
    chnl.setFormat(ChannelFormat.RSS_2_0);

    // 1 description element
    chnl.setDescription(channel.getChildTextTrim("description", defNS));

    // 1 link element
    chnl.setSite(ParserUtils.getURL(channel.getChildTextTrim("link", defNS)));

    // 1 language element
    chnl.setLanguage(channel.getChildTextTrim("language", defNS));

    // 1..n item elements
    List items = channel.getChildren("item", defNS);
    for (Object item1 : items) {
        Element item = (Element) item1;

        ParserUtils.matchCaseOfChildren(item,
                new String[] { "title", "link", "encoded", "description", "subject", "category", "pubDate",
                        "date", "author", "creator", "comments", "guid", "source", "enclosure" });

        // get title element
        Element elTitle = item.getChild("title", defNS);
        String strTitle = "<No Title>";
        if (elTitle != null) {
            strTitle = elTitle.getTextTrim();
        }
        if (logger.isDebugEnabled()) {
            logger.debug("Item element found (" + strTitle + ").");
        }

        // get link element
        Element elLink = item.getChild("link", defNS);
        String strLink = "";
        if (elLink != null) {
            strLink = elLink.getTextTrim();
        }

        // get description element
        Element elDesc = item.getChild("encoded", contentNS);
        if (elDesc == null) {
            elDesc = item.getChild("description", defNS);
        }
        String strDesc = "";
        if (elDesc != null) {
            strDesc = elDesc.getTextTrim();
        }

        // generate new RSS item (link to article)
        ItemIF rssItem = cBuilder.createItem(item, chnl, strTitle, strDesc, ParserUtils.getURL(strLink));

        // get subject element
        Element elSubject = item.getChild("subject", defNS);
        if (elSubject == null) {
            // fallback mechanism: get dc:subject element
            elSubject = item.getChild("subject", dcNS);
        }
        if (elSubject != null) {
            rssItem.setSubject(elSubject.getTextTrim());
        }

        // get category list
        // get list of <category> elements
        List listCategory = item.getChildren("category", defNS);
        if (listCategory.size() < 1) {
            // fallback mechanism: get dc:category element
            listCategory = item.getChildren("category", dcNS);
        }
        if (listCategory.size() > 0) {
            RecursiveHashtable<String> catTable = new RecursiveHashtable<String>();

            // for each category, parse hierarchy
            for (Object aListCategory : listCategory) {
                RecursiveHashtable<String> currTable = catTable;
                Element elCategory = (Element) aListCategory;
                // get contents of category element
                String[] titles = elCategory.getTextNormalize().split("/");
                for (String title : titles) {
                    // tokenize category string to extract out hierarchy
                    if (!currTable.containsKey(title)) {
                        // if token does not exist in current map, add it with child Hashtable
                        currTable.put(title, new RecursiveHashtable<String>());
                    }
                    // reset current Hashtable to child's Hashtable then iterate to next token
                    currTable = currTable.get(title);
                }
            }
            ArrayList<CategoryIF> catList = new ArrayList<CategoryIF>();
            // transform cat list & hierarchy into list of CategoryIF elements
            Enumeration<String> enumCategories = catTable.keys();
            while (enumCategories.hasMoreElements()) {
                String key = enumCategories.nextElement();
                // build category list: getCategoryList(parent, title, children)
                CategoryIF cat = getCategoryList(null, key, catTable.get(key));
                catList.add(cat);
            }
            if (catList.size() > 0) {
                // if categories were actually created, then add list to item node
                rssItem.setCategories(catList);
            }
        }

        // get publication date
        Element elDate = item.getChild("pubDate", defNS);
        if (elDate == null) {
            // fallback mechanism: get dc:date element
            elDate = item.getChild("date", dcNS);
        }
        if (elDate != null) {
            rssItem.setDate(ParserUtils.getDate(elDate.getTextTrim()));
        }

        rssItem.setFound(dateParsed);

        // get Author element
        Element elAuthor = item.getChild("author", defNS);
        if (elAuthor == null) {
            // fallback mechanism: get dc:creator element
            elAuthor = item.getChild("creator", dcNS);
        }
        if (elAuthor != null)
            rssItem.setCreator(elAuthor.getTextTrim());

        // get Comments element
        Element elComments = item.getChild("comments", defNS);
        String strComments = "";
        if (elComments != null) {
            strComments = elComments.getTextTrim();
        }
        rssItem.setComments(ParserUtils.getURL(strComments));

        // get guid element
        Element elGuid = item.getChild("guid", defNS);
        if (elGuid != null) {
            String guidUrl = elGuid.getTextTrim();
            if (guidUrl != null) {
                boolean permaLink = true;
                Attribute permaLinkAttribute = elGuid.getAttribute("isPermaLink", defNS);
                if (permaLinkAttribute != null) {
                    String permaLinkStr = permaLinkAttribute.getValue();
                    if (permaLinkStr != null) {
                        permaLink = Boolean.valueOf(permaLinkStr);
                    }
                }
                ItemGuidIF itemGuid = cBuilder.createItemGuid(rssItem, guidUrl, permaLink);
                rssItem.setGuid(itemGuid);
            }
        }

        // get source element
        Element elSource = item.getChild("source", defNS);
        if (elSource != null) {
            String sourceName = elSource.getTextTrim();
            Attribute sourceAttribute = elSource.getAttribute("url", defNS);
            if (sourceAttribute != null) {
                String sourceLocation = sourceAttribute.getValue().trim();
                ItemSourceIF itemSource = cBuilder.createItemSource(rssItem, sourceName, sourceLocation, null);
                rssItem.setSource(itemSource);
            }
        }

        // get enclosure element
        Element elEnclosure = item.getChild("enclosure", defNS);
        if (elEnclosure != null) {
            URL location = null;
            String type = null;
            int length = -1;
            Attribute urlAttribute = elEnclosure.getAttribute("url", defNS);
            if (urlAttribute != null) {
                location = ParserUtils.getURL(urlAttribute.getValue().trim());
            }
            Attribute typeAttribute = elEnclosure.getAttribute("type", defNS);
            if (typeAttribute != null) {
                type = typeAttribute.getValue().trim();
            }
            Attribute lengthAttribute = elEnclosure.getAttribute("length", defNS);
            if (lengthAttribute != null) {
                try {
                    length = Integer.parseInt(lengthAttribute.getValue().trim());
                } catch (NumberFormatException e) {
                    logger.warn(e);
                }
            }
            ItemEnclosureIF itemEnclosure = cBuilder.createItemEnclosure(rssItem, location, type, length);
            rssItem.setEnclosure(itemEnclosure);
        }
    }

    // 0..1 image element
    Element image = channel.getChild("image", defNS);
    if (image != null) {

        ParserUtils.matchCaseOfChildren(image,
                new String[] { "title", "url", "link", "width", "height", "description" });

        ImageIF rssImage = cBuilder.createImage(image.getChildTextTrim("title", defNS),
                ParserUtils.getURL(image.getChildTextTrim("url", defNS)),
                ParserUtils.getURL(image.getChildTextTrim("link", defNS)));
        Element imgWidth = image.getChild("width", defNS);
        if (imgWidth != null) {
            try {
                rssImage.setWidth(Integer.parseInt(imgWidth.getTextTrim()));
            } catch (NumberFormatException e) {
                logger.warn("Error parsing width: " + e.getMessage());
            }
        }
        Element imgHeight = image.getChild("height", defNS);
        if (imgHeight != null) {
            try {
                rssImage.setHeight(Integer.parseInt(imgHeight.getTextTrim()));
            } catch (NumberFormatException e) {
                logger.warn("Error parsing height: " + e.getMessage());
            }
        }
        Element imgDescr = image.getChild("description", defNS);
        if (imgDescr != null) {
            rssImage.setDescription(imgDescr.getTextTrim());
        }
        chnl.setImage(rssImage);
    }

    // 0..1 textinput element
    Element txtinp = channel.getChild("textinput", defNS);
    if (txtinp != null) {

        ParserUtils.matchCaseOfChildren(txtinp, new String[] { "title", "description", "name", "link" });

        TextInputIF rssTextInput = cBuilder.createTextInput(txtinp.getChildTextTrim("title", defNS),
                txtinp.getChildTextTrim("description", defNS), txtinp.getChildTextTrim("name", defNS),
                ParserUtils.getURL(txtinp.getChildTextTrim("link", defNS)));
        chnl.setTextInput(rssTextInput);
    }

    // 0..1 copyright element
    Element copyright = channel.getChild("copyright", defNS);
    if (copyright != null) {
        chnl.setCopyright(copyright.getTextTrim());
    }

    // 0..1 Rating element
    Element rating = channel.getChild("rating", defNS);
    if (rating != null) {
        chnl.setRating(rating.getTextTrim());
    }

    // 0..1 Docs element
    Element docs = channel.getChild("docs", defNS);
    if (docs != null) {
        chnl.setDocs(docs.getTextTrim());
    }

    // 0..1 Generator element
    Element generator = channel.getChild("generator", defNS);
    if (generator != null) {
        chnl.setGenerator(generator.getTextTrim());
    }

    // 0..1 ttl element
    Element ttl = channel.getChild("ttl", defNS);
    if (ttl != null) {
        String ttlValue = ttl.getTextTrim();
        try {
            chnl.setTtl(Integer.parseInt(ttlValue));
        } catch (NumberFormatException e) {
            logger.warn("Invalid TTL format: '" + ttlValue + "'");
        }
    }

    // 0..1 pubDate element
    Element pubDate = channel.getChild("pubDate", defNS);
    if (pubDate != null) {
        chnl.setPubDate(ParserUtils.getDate(pubDate.getTextTrim()));
    }

    // 0..1 lastBuildDate element
    Element lastBuildDate = channel.getChild("lastBuildDate", defNS);
    if (lastBuildDate != null) {
        chnl.setLastBuildDate(ParserUtils.getDate(lastBuildDate.getTextTrim()));
    }

    // get category list
    // get list of <category> elements
    List listCategory = channel.getChildren("category", defNS);
    if (listCategory.size() < 1) {
        // fallback mechanism: get dc:category element
        listCategory = channel.getChildren("category", dcNS);
    }
    if (listCategory.size() > 0) {
        RecursiveHashtable<String> catTable = new RecursiveHashtable<String>();
        // for each category, parse hierarchy
        for (Object aListCategory : listCategory) {
            RecursiveHashtable<String> currTable = catTable;
            Element elCategory = (Element) aListCategory;
            // get contents of category element
            String[] titles = elCategory.getTextNormalize().split("/");
            for (String title : titles) {
                // tokenize category string to extract out hierarchy
                if (!currTable.containsKey(title)) {
                    // if token does not exist in current map, add it with child Hashtable
                    currTable.put(title, new RecursiveHashtable<String>());
                }
                // reset current Hashtable to child's Hashtable then iterate to next token
                currTable = currTable.get(title);
            }
        }
        ArrayList<CategoryIF> catList = new ArrayList<CategoryIF>();
        // transform cat list & hierarchy into list of CategoryIF elements
        Enumeration<String> enumCategories = catTable.keys();
        while (enumCategories.hasMoreElements()) {
            String key = enumCategories.nextElement();
            // build category list: getCategoryList(parent, title, children)
            CategoryIF cat = getCategoryList(null, key, catTable.get(key));
            catList.add(cat);
        }
        if (catList.size() > 0) {
            // if categories were actually created, then add list to item node
            chnl.setCategories(catList);
        }
    }

    // 0..1 managingEditor element
    Element managingEditor = channel.getChild("managingEditor", defNS);
    if (managingEditor != null) {
        chnl.setCreator(managingEditor.getTextTrim());
    }

    // 0..1 webMaster element
    Element webMaster = channel.getChild("webMaster", defNS);
    if (webMaster != null) {
        chnl.setPublisher(webMaster.getTextTrim());
    }

    // 0..1 cloud element
    Element cloud = channel.getChild("cloud", defNS);
    if (cloud != null) {
        String _port = cloud.getAttributeValue("port", defNS);
        int port = -1;
        if (_port != null) {
            try {
                port = Integer.parseInt(_port);
            } catch (NumberFormatException e) {
                logger.warn(e);
            }
        }
        chnl.setCloud(cBuilder.createCloud(cloud.getAttributeValue("domain", defNS), port,
                cloud.getAttributeValue("path", defNS), cloud.getAttributeValue("registerProcedure", defNS),
                cloud.getAttributeValue("protocol", defNS)));
    }

    chnl.setLastUpdated(dateParsed);

    // 0..1 skipHours element
    // 0..1 skipDays element

    return chnl;
}

From source file:de.nava.informa.utils.XmlPathUtils.java

License:Open Source License

/**
 * Returns the value of  an element's child element reached by the given path.
 * Traverses the DOM tree from the parent until the child is reached.
 *
 * @param parent    the parent <code>Element</code>
 * @param childPath a path to the root of the elements.
 *                  Paths are specified as element names, separated by a "/".
 *                  Namespaces are allowed. e.g. "aaa:bbb/ccc:ddd/eee".
 * @return the value of the child. <br>If <code>parent</code> is
 * <code>null</code>, returns <code>null</code>. If
 * <code>childPath</code> is null, returns the value of the parent.
 *//*from   ww  w .  j a v  a 2 s .  c o  m*/
public static String getElementValue(final Element parent, final String childPath) {

    if (parent == null) {
        return null;
    } else {
        Element child = getLeafChild(parent, childPath);
        return (child == null) ? null : child.getTextTrim();
    }
}

From source file:de.nava.informa.utils.XmlPathUtils.java

License:Open Source License

/**
 * Returns the values of the specified sub-elements of the child parent element.
 * This is useful in cases where an element has several children.
 *
 * @param parent   the parent <code>Element</code>
 * @param children An array of child element names. May contain namespace specifiers.
 * @return an array containing the value of each child element.
 * <br>If <code>parent</code> or <code>children</code>
 * is <code>null</code>, returns <code>null</code>.
 *//*from w ww  .  j  av  a2  s  . c o  m*/
public static String[] getElementValues(final Element parent, final String[] children) {
    if ((parent == null) || (children == null)) {
        return null;
    } else {
        int numValues = children.length;
        String[] elementValues = new String[numValues];
        for (int i = 0; i < numValues; ++i) {
            Element child = getChild(parent, children[i]);
            elementValues[i] = (child == null) ? null : child.getTextTrim();
        }
        return elementValues;
    }
}

From source file:devicemodel.conversions.XmlConversions.java

public static DeviceNode xmlToNode(Element e, String id) {

    String[] ids = new String[] { "" };

    if (e.getAttribute("ids") != null) {
        ids = e.getAttributeValue("ids").split(",");
        e.removeAttribute("ids");
    }/*www.  j  a v  a 2 s.c o  m*/

    DeviceNode node = new DeviceNode(e.getName() + id);

    node.setValue(e.getTextTrim());

    for (Attribute a : e.getAttributes()) {
        node.getAttributes().put(a.getName(), a.getValue());
    }

    for (String cid : ids) {
        for (Element c : e.getChildren()) {
            try {
                node.addChild(xmlToNode(c, cid));
            } catch (Exception ex) {
            }
        }
    }

    return node;
}

From source file:edd.practica1.Principal.java

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
        if (seleccionado.showDialog(null, "Abrir Archivo") == JFileChooser.APPROVE_OPTION) {
            archivos = seleccionado.getSelectedFile();

            SAXBuilder builder = new SAXBuilder();

            try {
                Document document = (Document) builder.build(archivos);
                Element rootNode = document.getRootElement();

                Element Raiz = document.getRootElement();

                List listpri = Raiz.getChildren("dimension");

                for (int i = 0; i < listpri.size(); i++) {
                    Element camp = (Element) Raiz.getChildren("dimension").get(i);
                    String Dimensiones = camp.getTextTrim();
                    Dimension = Integer.parseInt(Dimensiones);
                    System.out.println("Dimension :" + Dimensiones);

                }//  w  ww  . j  a  v  a 2  s . c om

                List list = rootNode.getChildren("dobles");

                for (int i = 0; i < list.size(); i++) {
                    Element scrabble = (Element) list.get(i);
                    List lista_dobles = scrabble.getChildren();
                    System.out.println("\tdobles");
                    for (int j = 0; j < lista_dobles.size(); j++) {
                        Element dobles = (Element) lista_dobles.get(j);
                        String x = dobles.getChildTextTrim("x");
                        String y = dobles.getChildTextTrim("y");
                        System.out.println("\t" + x + "\t\t" + y + "\t");
                    }
                }

                List listtri = rootNode.getChildren("triples");

                for (int i = 0; i < listtri.size(); i++) {
                    Element scrabble = (Element) listtri.get(i);
                    List lista_triples = scrabble.getChildren();
                    System.out.println("\ttriples");
                    for (int j = 0; j < lista_triples.size(); j++) {
                        Element triples = (Element) lista_triples.get(j);
                        String x = triples.getChildTextTrim("x");
                        String y = triples.getChildTextTrim("y");
                        System.out.println("\t" + x + "\t\t" + y + "\t");
                    }
                }

                for (int i = 0; i < rootNode.getChildren("diccionario").size(); i++) {
                    Element listd = (Element) rootNode.getChildren("diccionario").get(i);
                    for (int j = 0; j < listd.getChildren().size(); j++) {
                        Element diccionario = (Element) listd.getChildren("palabra").get(j);
                        String palabra = (diccionario.getTextTrim());
                        System.out.println("\t" + palabra + "\t");
                        ListasSimplesDiccionario.IngresarNodo(palabra);
                        //ListaSimpleFichasJugador.VerLista();
                    }
                }
                GenerarFichasTotales();

            } catch (IOException | JDOMException io) {
                System.out.println(io.getMessage());
            }

        }

    }

From source file:edd.practica1_201404218.LeerXML.java

public void cargarXML(String ruta) {

    SAXBuilder builder = new SAXBuilder();
    File archivo = new File(ruta);
    try {//from w  ww  . ja  v a2 s .c om

        Document documento = (Document) builder.build(archivo);
        Element raiz = documento.getRootElement();

        for (int index = 0; index < raiz.getChildren("dimension").size(); index++) {
            Element campo = raiz.getChildren("dimension").get(index);
            String dimension = campo.getTextTrim();
            System.out.println(dimension);
        }

        for (int index = 0; index < raiz.getChildren("dobles").size(); index++) {
            Element doble = (Element) raiz.getChildren("dobles").get(index);

            for (int index2 = 0; index2 < doble.getChildren().size(); index2++) {
                Element casilla = (Element) doble.getChildren("casilla").get(index2);

                Posicion pos = new Posicion();
                pos.setTipo("doble");
                pos.setX(Integer.parseInt(casilla.getChildren("x").get(0).getTextTrim()));
                pos.setY(Integer.parseInt(casilla.getChildren("y").get(0).getTextTrim()));

                listaPosiciones.add(pos);

            }
        }

        for (int index = 0; index < raiz.getChildren("triples").size(); index++) {
            Element triple = (Element) raiz.getChildren("triples").get(index);

            for (int index2 = 0; index2 < triple.getChildren().size(); index2++) {
                Element casilla = (Element) triple.getChildren("casilla").get(index2);

                Posicion pos = new Posicion();
                pos.setTipo("triple");
                pos.setX(Integer.parseInt(casilla.getChildren("x").get(0).getTextTrim()));
                pos.setY(Integer.parseInt(casilla.getChildren("y").get(0).getTextTrim()));

                listaPosiciones.add(pos);

            }
        }

        for (int index = 0; index < raiz.getChildren("diccionario").size(); index++) {
            Element diccionario = (Element) raiz.getChildren("diccionario").get(index);

            for (int index2 = 0; index2 < diccionario.getChildren().size(); index2++) {
                Element palabra = (Element) diccionario.getChildren("palabra").get(index2);

                String valor = palabra.getTextTrim();
                listaPalabras.add(valor);
            }
        }

    } catch (Exception e) {

    }

}

From source file:esiptestbed.mudrod.main.MudrodEngine.java

License:Apache License

/**
 * Load the configuration provided at <a href=
 * "https://github.com/mudrod/mudrod/blob/master/core/src/main/resources/config.xml">config.xml</a>.
 * /* www .j a v  a 2 s.co  m*/
 * @return a populated {@link java.util.Properties} object.
 */
public Properties loadConfig() {
    SAXBuilder saxBuilder = new SAXBuilder();
    InputStream configStream = MudrodEngine.class.getClassLoader().getResourceAsStream("config.xml");

    Document document;
    try {
        document = saxBuilder.build(configStream);
        Element rootNode = document.getRootElement();
        List<Element> paraList = rootNode.getChildren("para");

        for (int i = 0; i < paraList.size(); i++) {
            Element paraNode = paraList.get(i);
            props.put(paraNode.getAttributeValue("name"), paraNode.getTextTrim());
        }
    } catch (JDOMException | IOException e) {
        LOG.error("Exception whilst retreiving or processing XML contained within 'config.xml'!", e);
    }
    return getConfig();

}

From source file:esiptestbed.mudrod.ontology.pre.AggregateTriples.java

License:Apache License

/**
 * Method of going through OWL structure
 *///from w w w.  java 2 s.  c o  m
public void loopxml() {
    Iterator<?> processDescendants = rootNode.getDescendants(new ElementFilter());
    String text = "";

    while (processDescendants.hasNext()) {
        Element e = (Element) processDescendants.next();
        String currentName = e.getName();
        text = e.getTextTrim();
        if ("".equals(text)) {
            LOG.info(currentName);
        } else {
            LOG.info("{} : {}", currentName, text);
        }
    }
}

From source file:fr.paris.lutece.plugins.dila.service.impl.DilaBatchXMLService.java

License:Open Source License

@Override
public XmlDTO buildDocument(File file, AudienceCategoryEnum typeXML) throws JDOMException, IOException {
    XmlDTO dilaXml = new XmlDTO();
    dilaXml.setIdAudience(typeXML.getId());

    // Convert file to document object
    Document document = _saxBuilder.build(file);

    // Get root//www. j  a  v a  2  s.  com
    Element root = document.getRootElement();

    // Get attribute ID
    Attribute rootAttrId = root.getAttribute(ATTRIBUTE_ID);

    if (rootAttrId != null) {
        String strId = rootAttrId.getValue();
        dilaXml.setIdXml(strId);
    }

    // Get title
    Element title = root.getChild(CHILD_TITLE, NAMESPACE_DC);

    if (title != null) {
        String strTitle = title.getTextTrim();
        dilaXml.setTitle(strTitle);
    }

    // Get type
    Element type = root.getChild(CHILD_TYPE, NAMESPACE_DC);

    if (type != null) {
        if (file.getName().startsWith("R")) {
            dilaXml.setResourceType(RESSOURCE_TYPE);
        } else {
            String strType = type.getTextTrim();
            dilaXml.setResourceType(strType);
        }
    }

    // Get breadcrumb
    Element rootBreadcrumb = root.getChild(CHILD_BREADCRUMB);

    if (rootBreadcrumb != null) {
        List<Element> listBreadcrumb = rootBreadcrumb.getChildren();

        if (CollectionUtils.isNotEmpty(listBreadcrumb)) {
            List<String> listBreadcrumbId = new ArrayList<String>(listBreadcrumb.size());

            for (Element elementBreadcrumb : listBreadcrumb) {
                listBreadcrumbId.add(elementBreadcrumb.getAttributeValue(ATTRIBUTE_ID));
            }

            String strBreadcrumb = StringUtils.join(listBreadcrumbId, ";");
            dilaXml.setBreadCrumb(strBreadcrumb);
        }
    }

    return dilaXml;
}