diff --git a/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForAtom03.java b/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForAtom03.java index 6b76f12..74dd500 100644 --- a/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForAtom03.java +++ b/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForAtom03.java @@ -309,7 +309,7 @@ public class ConverterForAtom03 implements Converter { } } // no alternate link? then use THE link if there is one - if (alternateLinks.size() == 0 && syndFeed.getLink() != null) { + if (alternateLinks.isEmpty() && syndFeed.getLink() != null) { Link link = new Link(); link.setRel("alternate"); link.setHref(syndFeed.getLink()); @@ -420,7 +420,7 @@ public class ConverterForAtom03 implements Converter { } } // no alternate link? then use THE link if there is one - if (alternateLinks.size() == 0 && sEntry.getLink() != null) { + if (alternateLinks.isEmpty() && sEntry.getLink() != null) { Link link = new Link(); link.setRel("alternate"); link.setHref(sEntry.getLink()); diff --git a/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForAtom10.java b/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForAtom10.java index 49c1074..8f9a6b3 100644 --- a/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForAtom10.java +++ b/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForAtom10.java @@ -358,7 +358,7 @@ public class ConverterForAtom10 implements Converter { } } // no alternate link? then use THE link if there is one - if (alternateLinks.size() == 0 && syndFeed.getLink() != null) { + if (alternateLinks.isEmpty() && syndFeed.getLink() != null) { Link link = new Link(); link.setRel("alternate"); link.setHref(syndFeed.getLink()); @@ -485,7 +485,7 @@ public class ConverterForAtom10 implements Converter { } } // no alternate link? then use THE link if there is one - if (alternateLinks.size() == 0 && sEntry.getLink() != null) { + if (alternateLinks.isEmpty() && sEntry.getLink() != null) { Link link = new Link(); link.setRel("alternate"); link.setHref(sEntry.getLink()); diff --git a/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForRSS091Userland.java b/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForRSS091Userland.java index e01157b..bcc035f 100644 --- a/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForRSS091Userland.java +++ b/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForRSS091Userland.java @@ -23,19 +23,23 @@ import com.sun.syndication.feed.rss.Content; import com.sun.syndication.feed.rss.Description; import com.sun.syndication.feed.rss.Image; import com.sun.syndication.feed.rss.Item; -import com.sun.syndication.feed.synd.SyndFeed; import com.sun.syndication.feed.synd.SyndContent; -import com.sun.syndication.feed.synd.SyndEntry; -import com.sun.syndication.feed.synd.SyndImage; import com.sun.syndication.feed.synd.SyndContentImpl; +import com.sun.syndication.feed.synd.SyndEntry; +import com.sun.syndication.feed.synd.SyndFeed; +import com.sun.syndication.feed.synd.SyndImage; import com.sun.syndication.feed.synd.SyndPerson; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + /** */ public class ConverterForRSS091Userland extends ConverterForRSS090 { - public ConverterForRSS091Userland() { this("rss_0.91U"); } @@ -44,110 +48,130 @@ public class ConverterForRSS091Userland extends ConverterForRSS090 { super(type); } - public void copyInto(WireFeed feed,SyndFeed syndFeed) { + @Override + public void copyInto(WireFeed feed, SyndFeed syndFeed) { Channel channel = (Channel) feed; - super.copyInto(channel,syndFeed); - syndFeed.setLanguage(channel.getLanguage()); //c - syndFeed.setCopyright(channel.getCopyright()); //c + super.copyInto(channel, syndFeed); + syndFeed.setLanguage(channel.getLanguage()); //c + syndFeed.setCopyright(channel.getCopyright()); //c + Date pubDate = channel.getPubDate(); - if (pubDate!=null) { - syndFeed.setPublishedDate(pubDate); //c + + if (pubDate != null) { + syndFeed.setPublishedDate(pubDate); //c } else if (channel.getLastBuildDate() != null) { - syndFeed.setPublishedDate(channel.getLastBuildDate()); //c + syndFeed.setPublishedDate(channel.getLastBuildDate()); //c } - String author = channel.getManagingEditor(); - if (author!=null) { + + if (author != null) { List creators = ((DCModule) syndFeed.getModule(DCModule.URI)).getCreators(); + if (!creators.contains(author)) { Set s = new HashSet(); // using a set to remove duplicates - s.addAll(creators); // DC creators - s.add(author); // feed native author + s.addAll(creators); // DC creators + s.add(author); // feed native author creators.clear(); creators.addAll(s); } } - - } - - protected SyndImage createSyndImage(Image rssImage) { - SyndImage syndImage = super.createSyndImage(rssImage); - syndImage.setDescription(rssImage.getDescription()); - return syndImage; - } - - // for rss -> synd - // rss.content -> synd.content - // rss.description -> synd.description - - protected SyndEntry createSyndEntry(Item item, boolean preserveWireItem) { - SyndEntry syndEntry = super.createSyndEntry(item, preserveWireItem); - Description desc = item.getDescription(); - if (desc != null) { - SyndContent descContent = new SyndContentImpl(); - descContent.setType(desc.getType()); - descContent.setValue(desc.getValue()); - syndEntry.setDescription(descContent); - } - Content cont = item.getContent(); - if (cont != null) { - SyndContent content = new SyndContentImpl(); - content.setType(cont.getType()); - content.setValue(cont.getValue()); - List syndContents = new ArrayList(); - syndContents.add(content); - syndEntry.setContents(syndContents); - } - return syndEntry; - } - - protected WireFeed createRealFeed(String type,SyndFeed syndFeed) { - Channel channel = (Channel) super.createRealFeed(type,syndFeed); - channel.setLanguage(syndFeed.getLanguage()); //c - channel.setCopyright(syndFeed.getCopyright()); //c - channel.setPubDate(syndFeed.getPublishedDate()); //c - if (syndFeed.getAuthors()!=null && syndFeed.getAuthors().size() > 0) { - SyndPerson author = (SyndPerson)syndFeed.getAuthors().get(0); - channel.setManagingEditor(author.getName()); - } - return channel; - } - - protected Image createRSSImage(SyndImage sImage) { - Image image = super.createRSSImage(sImage); - image.setDescription(sImage.getDescription()); - return image; - } - - // for synd -> rss - // synd.content -> rss.content - // synd.description -> rss.description - - protected Item createRSSItem(SyndEntry sEntry) { - Item item = super.createRSSItem(sEntry); - - SyndContent sContent = sEntry.getDescription(); - if (sContent!=null) { - item.setDescription(createItemDescription(sContent)); - } - List contents = sEntry.getContents(); - if (contents != null && contents.size() > 0) { - SyndContent syndContent = (SyndContent)contents.get(0); - Content cont = new Content(); - cont.setValue(syndContent.getValue()); - cont.setType(syndContent.getType()); - item.setContent(cont); - } - return item; } protected Description createItemDescription(SyndContent sContent) { Description desc = new Description(); desc.setValue(sContent.getValue()); desc.setType(sContent.getType()); + return desc; } + @Override + protected Image createRSSImage(SyndImage sImage) { + Image image = super.createRSSImage(sImage); + image.setDescription(sImage.getDescription()); + return image; + } + + // for synd -> rss + // synd.content -> rss.content + // synd.description -> rss.description + @Override + protected Item createRSSItem(SyndEntry sEntry) { + Item item = super.createRSSItem(sEntry); + + SyndContent sContent = sEntry.getDescription(); + + if (sContent != null) { + item.setDescription(createItemDescription(sContent)); + } + + List contents = sEntry.getContents(); + + if ((contents != null) && (contents.size() > 0)) { + SyndContent syndContent = (SyndContent) contents.get(0); + Content cont = new Content(); + cont.setValue(syndContent.getValue()); + cont.setType(syndContent.getType()); + item.setContent(cont); + } + + return item; + } + + @Override + protected WireFeed createRealFeed(String type, SyndFeed syndFeed) { + Channel channel = (Channel) super.createRealFeed(type, syndFeed); + channel.setLanguage(syndFeed.getLanguage()); //c + channel.setCopyright(syndFeed.getCopyright()); //c + channel.setPubDate(syndFeed.getPublishedDate()); //c + + if ((syndFeed.getAuthors() != null) && (syndFeed.getAuthors() + .size() > 0)) { + SyndPerson author = (SyndPerson) syndFeed.getAuthors() + .get(0); + channel.setManagingEditor(author.getName()); + } + + return channel; + } + + // for rss -> synd + // rss.content -> synd.content + // rss.description -> synd.description + @Override + protected SyndEntry createSyndEntry(Item item, boolean preserveWireItem) { + SyndEntry syndEntry = super.createSyndEntry(item, preserveWireItem); + Description desc = item.getDescription(); + + if (desc != null) { + SyndContent descContent = new SyndContentImpl(); + descContent.setType(desc.getType()); + descContent.setValue(desc.getValue()); + syndEntry.setDescription(descContent); + } + + Content cont = item.getContent(); + + if (cont != null) { + SyndContent content = new SyndContentImpl(); + content.setType(cont.getType()); + content.setValue(cont.getValue()); + + List syndContents = new ArrayList(); + syndContents.add(content); + syndEntry.setContents(syndContents); + } + + return syndEntry; + } + + @Override + protected SyndImage createSyndImage(Image rssImage) { + SyndImage syndImage = super.createSyndImage(rssImage); + syndImage.setDescription(rssImage.getDescription()); + + return syndImage; + } } diff --git a/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForRSS092.java b/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForRSS092.java index e8bb4c1..f47462d 100644 --- a/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForRSS092.java +++ b/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForRSS092.java @@ -42,6 +42,7 @@ public class ConverterForRSS092 extends ConverterForRSS091Userland { super(type); } + @Override protected SyndEntry createSyndEntry(Item item, boolean preserveWireItem) { SyndEntry syndEntry = super.createSyndEntry(item, preserveWireItem); List cats = item.getCategories(); @@ -83,6 +84,7 @@ public class ConverterForRSS092 extends ConverterForRSS091Userland { return sEnclosures; } + @Override protected Item createRSSItem(SyndEntry sEntry) { Item item = super.createRSSItem(sEntry); diff --git a/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForRSS093.java b/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForRSS093.java index 280bb19..79839af 100644 --- a/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForRSS093.java +++ b/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForRSS093.java @@ -33,6 +33,7 @@ public class ConverterForRSS093 extends ConverterForRSS092 { super(type); } + @Override protected SyndEntry createSyndEntry(Item item, boolean preserveWireItem) { SyndEntry syndEntry = super.createSyndEntry(item, preserveWireItem); Date pubDate = item.getPubDate(); @@ -42,6 +43,7 @@ public class ConverterForRSS093 extends ConverterForRSS092 { return syndEntry; } + @Override protected Item createRSSItem(SyndEntry sEntry) { Item item = super.createRSSItem(sEntry); item.setPubDate(sEntry.getPublishedDate()); //c diff --git a/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForRSS094.java b/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForRSS094.java index 25eca4f..9c36934 100644 --- a/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForRSS094.java +++ b/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForRSS094.java @@ -94,6 +94,7 @@ public class ConverterForRSS094 extends ConverterForRSS093 { } + @Override protected WireFeed createRealFeed(String type,SyndFeed syndFeed) { Channel channel = (Channel) super.createRealFeed(type,syndFeed); List cats = syndFeed.getCategories(); //c diff --git a/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForRSS10.java b/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForRSS10.java index 868df14..1b4b704 100644 --- a/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForRSS10.java +++ b/src/main/java/com/sun/syndication/feed/synd/impl/ConverterForRSS10.java @@ -40,6 +40,7 @@ public class ConverterForRSS10 extends ConverterForRSS090 { super(type); } + @Override public void copyInto(WireFeed feed,SyndFeed syndFeed) { Channel channel = (Channel) feed; super.copyInto(channel,syndFeed); @@ -55,6 +56,7 @@ public class ConverterForRSS10 extends ConverterForRSS090 { // rss.content -> synd.content // rss.description -> synd.description + @Override protected SyndEntry createSyndEntry(Item item, boolean preserveWireItem) { SyndEntry syndEntry = super.createSyndEntry(item, preserveWireItem); @@ -78,6 +80,7 @@ public class ConverterForRSS10 extends ConverterForRSS090 { return syndEntry; } + @Override protected WireFeed createRealFeed(String type,SyndFeed syndFeed) { Channel channel = (Channel) super.createRealFeed(type,syndFeed); if (syndFeed.getUri() != null) { @@ -94,6 +97,7 @@ public class ConverterForRSS10 extends ConverterForRSS090 { // synd.content -> rss.content // synd.description -> rss.description + @Override protected Item createRSSItem(SyndEntry sEntry) { Item item = super.createRSSItem(sEntry); diff --git a/src/main/java/com/sun/syndication/io/impl/XmlFixerReader.java b/src/main/java/com/sun/syndication/io/impl/XmlFixerReader.java index 3ca695e..6494b7a 100644 --- a/src/main/java/com/sun/syndication/io/impl/XmlFixerReader.java +++ b/src/main/java/com/sun/syndication/io/impl/XmlFixerReader.java @@ -56,7 +56,8 @@ public class XmlFixerReader extends Reader { hasContent = false; } else - if (c==' ' || c=='\n') { + //TODO lorenzo.sm: Pending to review. c=='\r' condition added. + if (c==' ' || c=='\n' || c=='\r') { loop = true; } else diff --git a/src/test/java/com/sun/syndication/unittest/issues/Issue1Test.java b/src/test/java/com/sun/syndication/unittest/issues/Issue1Test.java new file mode 100644 index 0000000..0b65420 --- /dev/null +++ b/src/test/java/com/sun/syndication/unittest/issues/Issue1Test.java @@ -0,0 +1,176 @@ +/* + * Copyright 2011 robert.cooper. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * under the License. + */ +package com.sun.syndication.unittest.issues; + +import com.sun.syndication.io.impl.XmlFixerReader; +import com.sun.syndication.io.XmlReader; +import com.sun.syndication.unittest.SyndFeedTest; + +import org.jdom.input.SAXBuilder; + +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStreamWriter; +import java.io.Reader; +import java.io.StringReader; +import java.io.Writer; + + +/** + * + * @author robert.cooper + */ +public class Issue1Test extends SyndFeedTest { + private static final String XML_PROLOG = ""; + + public Issue1Test() { + super("rss_2.0", "jira_issue1.xml"); + } + + public void testAmpHandling() throws Exception { + String input = "& &aa &"; + BufferedReader reader = new BufferedReader(new XmlFixerReader(new StringReader(input))); + String output = reader.readLine(); + reader.close(); + assertEquals("& &aa &", output); + } + + public void testHtmlEntities() throws Exception { + _testValidEntities(""); + _testValidEntities(XML_PROLOG + ""); + _testValidEntities(" \n" + XML_PROLOG + ""); + + _testValidEntities("'¥ú¥"); + _testValidEntities(XML_PROLOG + "'¥ú¥"); + _testValidEntities(" \n" + XML_PROLOG + "'¥ú¥"); + + _testValidEntities("ΠΡ#913;Ρ"); + _testValidEntities(XML_PROLOG + "ΠΡΑΡ"); + _testValidEntities(" \n" + XML_PROLOG + "ΠΡΑΡ"); + + _testValidEntities("Œ—–—"); + _testValidEntities(XML_PROLOG + "Œ—–—"); + _testValidEntities(" \n" + XML_PROLOG + "Œ—–—"); + + _testInvalidEntities("'&yexn;ú¥"); + _testInvalidEntities(XML_PROLOG + "'&yexn;ú¥"); + _testInvalidEntities(" \n" + XML_PROLOG + "'&yexn;ú¥"); + + _testInvalidEntities("Π&Rhox;#913;Ρ"); + _testInvalidEntities(XML_PROLOG + "Π&Rhox;ΑΡ"); + _testInvalidEntities(" \n" + XML_PROLOG + "Π&Rhox;ΑΡ"); + + _testInvalidEntities("'¥x50;¥"); + _testInvalidEntities(XML_PROLOG + "'¥x50;¥"); + _testInvalidEntities(" \n" + XML_PROLOG + "'¥x50;¥"); + + _testInvalidEntities("ΠΡ x13;Ρ"); + _testInvalidEntities(XML_PROLOG + "ΠΡ x13;Ρ"); + _testInvalidEntities(" \n" + XML_PROLOG + "ΠΡ x13;Ρ"); + } + + public void testTrim() throws Exception { + _testValidTrim("", ""); + _testValidTrim("", XML_PROLOG + ""); + _testValidTrim(" ", ""); + _testValidTrim(" ", XML_PROLOG + ""); + _testValidTrim(" \n", ""); + _testValidTrim(" \n", XML_PROLOG + ""); + _testValidTrim("", ""); + _testValidTrim("", XML_PROLOG + ""); + _testValidTrim(" ", ""); + _testValidTrim(" ", XML_PROLOG + ""); + _testValidTrim(" ", ""); + _testValidTrim(" ", XML_PROLOG + ""); + _testValidTrim(" ", ""); + _testValidTrim(" ", XML_PROLOG + ""); + _testValidTrim(" \n ", ""); + _testValidTrim(" \n ", XML_PROLOG + ""); + + //TODO lorenzo.sm: This test was added to trim \r char (as with \n). Source of "bad" RSS http://www.diariohorizonte.com/rss/71/deportes + _testValidTrim("\r\n", XML_PROLOG + ""); + + _testInvalidTrim("x", ""); + _testInvalidTrim("x", XML_PROLOG + ""); + _testInvalidTrim(" x", ""); + _testInvalidTrim(" x", XML_PROLOG + ""); + _testInvalidTrim(" x\n", ""); + _testInvalidTrim(" x\n", XML_PROLOG + ""); + _testInvalidTrim("x ", ""); + _testInvalidTrim(" x ", XML_PROLOG + ""); + _testInvalidTrim(" x ", ""); + _testInvalidTrim(" x ", XML_PROLOG + ""); + _testInvalidTrim(" x\n ", ""); + _testInvalidTrim(" x\n ", XML_PROLOG + ""); + } + + // XML Stream generator + protected InputStream getStream(String garbish, String xmlDoc) + throws IOException { + ByteArrayOutputStream baos = new ByteArrayOutputStream(1024); + Writer writer = new OutputStreamWriter(baos); + writer.write(garbish); + writer.write(xmlDoc); + writer.close(); + + return new ByteArrayInputStream(baos.toByteArray()); + } + + protected void _testInvalidEntities(String xmlDoc) + throws Exception { + try { + _testXmlParse("", xmlDoc); + assertTrue(false); + } catch (Exception ex) { + } + } + + protected void _testInvalidTrim(String garbish, String xmlDoc) + throws Exception { + try { + _testXmlParse(garbish, xmlDoc); + assertTrue(false); + } catch (Exception ex) { + } + } + + protected void _testValidEntities(String xmlDoc) throws Exception { + _testXmlParse("", xmlDoc); + } + + protected void _testValidTrim(String garbish, String xmlDoc) + throws Exception { + _testXmlParse(garbish, xmlDoc); + } + + protected void _testXmlParse(String garbish, String xmlDoc) + throws Exception { + InputStream is = getStream(garbish, xmlDoc); + Reader reader = new XmlReader(is); + reader = new XmlFixerReader(reader); + + SAXBuilder saxBuilder = new SAXBuilder(); + saxBuilder.build(reader); + } +} diff --git a/src/test/java/com/sun/syndication/unittest/issues/Issue1TestX.java b/src/test/java/com/sun/syndication/unittest/issues/Issue1TestX.java deleted file mode 100644 index 7c0e39e..0000000 --- a/src/test/java/com/sun/syndication/unittest/issues/Issue1TestX.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2011 robert.cooper. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * under the License. - */ - -package com.sun.syndication.unittest.issues; - -import com.sun.syndication.unittest.SyndFeedTest; - -/** - * - * @author robert.cooper - */ -public class Issue1TestX extends SyndFeedTest { - - public Issue1TestX(){ - super("rss_2.0", "jira_issue1.xml"); - } - -} diff --git a/src/test/resources/jira_issue1.xml b/src/test/resources/jira_issue1.xml index 05fc910..30856ca 100644 --- a/src/test/resources/jira_issue1.xml +++ b/src/test/resources/jira_issue1.xml @@ -1,275 +1,118 @@ - - - Periodico Diario Horizonte - Noticias para Hispanos en Connecticut, Hispanic newspaper,spanish newspaper:Deportes - - - es-ES - - Periodico Diario Horizonte - Noticias para Hispanos en Connecticut, Hispanic newspaper,spanish newspaper - http://www.diariohorizonte.com/images/pleca_01.jpg - http://www.diariohorizonte.com - 100 - 60 - - Club Hemingway presenta campeón y subcampeón de Pádel - - + + + test + rss_2.0.channel.title + rss_2.0.channel.link + rss_2.0.channel.description + rss_2.0.channel.language + rss_2.0.channel.rating + rss_2.0.channel.copyright + Mon, 01 Jan 2001 00:00:00 GMT + + Mon, 01 Jan 2001 01:00:00 GMT + rss_2.0.channel.docs + rss_2.0.channel.managingEditor + rss_2.0.channel.webMaster + rss_2.0.channel.category[0] + rss_2.0.channel.category[1] + rss_2.0.channel.generator + 100 -Sorprendente fue el inicio de las confrontaciones, logrando triunfar en la ronda regular la pareja integrada por Encarna Gamis y José Campello,]]> - - - DECLARACION DE LA COMISION ELECTORAL A LA PRENSA. - - - - - Stamford pierde de Westhill por lazos de tenis - + rss_2.0.channel.image.title + rss_2.0.channel.image.url + rss_2.0.channel.image.link + 100 + 200 + rss_2.0.channel.image.description + -A pesar de que Julio Sánchez de]]> - - - Mutus deberá pagar $23 millones por romper contrato de fútbol - + rss_2.0.channel.item[0].title + rss_2.0.channel.item[0].description + rss_2.0.channel.item[0].link + rss_2.0.channel.item[0].source + + + rss_2.0.channel.item[0].category[0] + rss_2.0.channel.item[0].category[1] + Mon, 01 Jan 2001 00:00:00 GMT + Mon, 01 Jan 2001 01:00:00 GMT + rss_2.0.channel.item[0].author + rss_2.0.channel.item[0].comments + rss_2.0.channel.item[0].guid + test + rss_2.0.channel.item[0].content + + + rss_2.0.channel.item[1].title + rss_2.0.channel.item[1].description + rss_2.0.channel.item[1].link + rss_2.0.channel.item[1].source + + + rss_2.0.channel.item[1].category[0] + rss_2.0.channel.item[1].category[1] + Mon, 02 Jan 2001 00:00:00 GMT + Mon, 01 Jan 2001 01:00:00 GMT + rss_2.0.channel.item[1].author + rss_2.0.channel.item[1].comments + rss_2.0.channel.item[1].guid + test + rss_2.0.channel.item[1].content + -Mutus está casado con Consuelo Matos Gómez, la hija del señor Leonardo Matos Berrido, presidente de la Liga Dominicana de Baseball. Ella fue nombrada funcionaria externa de la República Dominicana en el Vaticano. + + rss_2.0.channel.textInput.title + rss_2.0.channel.textInput.description + rss_2.0.channel.textInput.name + rss_2.0.channel.textInput.link + + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 23 + + + Monday + Tuesday + Wednesday + Thursday + Friday + Saturday + Sunday + + -Mutus posee dos en Coral]]> - - - Ciro Pérez empata serie final torneo de basket Superior de SC - - - - - Águilas rechazan protesta de los Leones - - - - 116-91. Udrih ayudó a los Kings a romper una racha perdedora - - - - - Independiente, el quinto clasificado de Argentina a la Copa Libertadores 2011 - - - - - Ciro Pérez gana en el inicio serie final torneo basket superior de SC - - - - - El dominicano Peña se va con los Cachorros por un año y 10 millones de dólares - - - - - Los Dodgers llegan a acuerdos con Padilla y Gwyn Jr. - - - - - Colón y Luna lideran Águilas al triunfo 3-2 sobre los Leones - - - - - El Atlético Nacional destituye al entrenador y prepara poda de extranjeros - - - - - Ciro Pérez y Buitres inician este miércoles serie final basket superior de SC - - - - - Choque de estrellas en un partido entre República Dominicana y Puerto Rico - - - - - La NBA rescata a los Hornets para que no pierdan valor ni cambien de sede - - - - - Sólo Messi puede privar a España del Balón de Oro que buscan Iniesta y Xavi - - - - - Muerte entrenador boxeo Pastor Ralph consterna comunidad deportiva internacional - - - - - Medias Rojas dan otro giro en negociaciones con González - - - - - Los Leones se afirman en la clasificación tras vencer a Caribes - - - - - Estrellas, Gigantes y Toros ganan en el béisbol dominicano - - - - - Berkman llega a un acuerdo con los Cardenales - - - - - Los Eagles se quejan de que su mariscal Vick recibe muchos golpes - - - - - Jeter y los Yankees llegan a un acuerdo para firmar contrato - - - - - Los Toros siguen firmes en la cima de la pelota dominicana - - - - - Los Navegantes del Magallanes nuevo líder al caer las Águilas en Venezuela - - - - - 104-92. Garnett y Rondo dieron a los Celtics el sexto triunfo consecutivo - - - - - 92-100. Stoudemire mantuvo ganadores a los Knicks - - - - - 113-80. Los Lakers cortan la racha de derrotas y arrollan a los Kings - - - - - Cinco clubes colombianos de fútbol investigados por vínculos por narcotráfico - - - - - James ganó a los Cavaliers y reivindicó su marcha como un acierto - - - - - 101-107. Richardson, Hill y Nash fueron la combinación ganadora - - - - - "King" James hizo historia y silenció a los críticos en regreso a Cleveland - - - - - Tiger Woods a punto de recuperar primer lugar mundialmente - - - - Ramírez sale del contrato para obtener un mejor sueldo con Medias Blancas - - - - - LeBron James regresa a Cleveland con problemas en el avión de los Heat - - - - - Agüero jura la Constitución Española y obtiene la doble nacionalidad - - - - - \ No newline at end of file + +