0

このJavaコードは、NYTのWorld RSSのすべてのアイテムのタイトル、リンク、および発行日を印刷します。ただし、NYTのScience RSSの場合、リンクフィールドは印刷されません。ここで何が起きてるの?

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();

Document doc = builder.parse( direccion );
XPathFactory xPathfactory = XPathFactory.newInstance();
XPath xpath = xPathfactory.newXPath();
XPathExpression expr = xpath.compile("/rss/channel/item");
NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
for (int i = 0; i < nl.getLength(); i++) {
    Node node = nl.item(i);

    Node nodoTitulo = (Node) xpath.evaluate("title", node, XPathConstants.NODE);
    System.out.println(nodoTitulo.getTextContent());

    Node nodoLink = (Node) xpath.evaluate("link", node, XPathConstants.NODE);
    System.out.println(nodoLink.getTextContent());

    Node nodoFecha = (Node) xpath.evaluate("pubDate", node, XPathConstants.NODE);
    System.out.println(nodoFecha.getTextContent());
    System.out.println();
}
4

1 に答える 1

0

それはnamespace問題です。

科学RSSでは、あなたは

<atom:link href="http://www.nytimes.com/2012/08/19/business/new-wave-of-adept-robots-is-changing-global-industry.html?partner=rss&amp;emc=rss" rel="standout"/>
<title>The iEconomy: New Wave of Deft Robots Is Changing Global Industry</title>
<link>http://feeds.nytimes.com/click.phdo?i=5861b5e3f6b66da6ca12beab1e5d8729</link>

世界のRSSでは、あなたは

<title>Syrian Rebels Claim to Have Brought Down a Jet</title>
<link>http://feeds.nytimes.com/click.phdo?i=314bd32f9d6141a500e76e3076c489c9</link>
.
.
.
<atom:link rel="standout" href="http://www.nytimes.com/2012/08/14/world/middleeast/syrian-rebels-claim-to-have-brought-down-a-jet.html?partner=rss&amp;emc=rss"/>

<atmoic:link>あなたのコードは最初にノードをピックアップしています。

追加:

factory.setNamespaceAware(true);

ファクトリを作成した後、ビルダーを作成する前に、リンクを取得する必要があります

title = The iEconomy: New Wave of Deft Robots Is Changing Global Industry
link = http://feeds.nytimes.com/click.phdo?i=5861b5e3f6b66da6ca12beab1e5d8729
pubDate = Sun, 19 Aug 2012 21:26:33 GMT

そして、あなたが本当に興味を持っているなら、あなたはいくつかのより多くの情報のためにこれを読むことができます

于 2012-08-20T04:46:05.810 に答える