Avatar billede mik28 Seniormester
09. november 2007 - 08:46 Der er 11 kommentarer og
1 løsning

Udskrive data fra et rss feed

Hej Eksperter,

Jeg sidder med det problem at jeg ikke kan finde ud af at få skrevet et rss feed ud.

Det ser således ud:
RSS feeded ser således ud

version="1.0" encoding="iso-8859-1"?>
<rss version="2.0">
  <channel>
    <title>Title</title>
    <link>http://LINK</link>
    <description>DESCRIPTION</description>
    <language>da</language>
    <lastBuildDate>Thu, 08 Nov 2007 10:35:29 GMT</lastBuildDate>
    <docs>http://ladida</docs>
    <generator>RSSpray 0.1</generator>
    <numberOfRows xmlns='df'></numberOfRows>
    <rssid xmlns='df'>2007-11-08T10:35:29+01:00</rssid>
    <player xmlns='ff'></player>
    <item>
      <title><![CDATA[bla bla bla]]></title>
      <file>FIL</file>
      <description><![CDATA[buygvbuygvbuy]]></description>
      <pubDate>Thu, 08 Nov 2007 09:10:03 GMT</pubDate>
      <pubDate2>08.11.2007</pubDate2>
      <createdby xmlns='bb'><![CDATA[nkjnj]]></createdby>
      <updatedby xmlns='bb'><![CDATA[knjnj]]></updatedby>
      <artikel xmlns='bb'><![CDATA[]]></artikel>
      <duration xmlns='bb'><![CDATA[114.056]]></duration>
      <opphav xmlns='bb'><![CDATA[]]></opphav>
      <clipid xmlns='bb'><![CDATA[12152]]></clipid>
      <artikelid xmlns='bb'><![CDATA[356834]]></artikelid>
      <enclosure url="kjbhjib"  type="image/png" />
      <click xmlns='bb'><![CDATA[11]]></click>
      <click24hours xmlns='bb'><![CDATA[11]]></click24hours>
      <click7days xmlns='bb'><![CDATA[11]]></click7days>
      <category>kmnkl</category>
      <category>kmkm</category>
      <category>lkmm</category>
      <category>lkmkjmk</category>
      <tag xmlns='bb'>bhbhb,ssss,a,s</tag>
    </item>

Min jsp kode ser således ud:

try {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    // Fortolk kildens XML-kode til et DOM-trae
    Document trae = factory.newDocumentBuilder().parse(kilde);

    // Find titlen på nyhedskilden med XPath-udtryk
    Node titel = XPathAPI.selectSingleNode(trae, "RDF/channel/title/text()");
  %>

  <%
    // Lav liste med overskrifter på artikler med XPath-udtryk
    NodeList overskrifter = XPathAPI.selectNodeList(trae, "RDF/item/title/text()");

Kan jeg gøre det på den måde, og i så fald hvad skal jeg så skrive i

Node titel = XPathAPI.selectSingleNode(trae, "RDF/channel/title/text()");

hvis jeg vil have alle titles
Avatar billede mik28 Seniormester
09. november 2007 - 08:48 #1
og hvad skriver jeg i

NodeList overskrifter = XPathAPI.selectNodeList(trae, "RDF/item/title/text()");

for at få alle overskrifter
Avatar billede mik28 Seniormester
09. november 2007 - 09:18 #2
burde jeg ikke kunne få title sådan her??

Node titel = XPathAPI.selectSingleNode(trae, "//channel/title");
Avatar billede mik28 Seniormester
09. november 2007 - 10:38 #3
Nå men jeg fandt ud af at det skal være:
Node titel = XPathAPI.selectSingleNode(trae, "//channel/title/text()");
Avatar billede mik28 Seniormester
09. november 2007 - 10:41 #4
nu har jeg så kun et lille bitte problem. Hvordan får jeg fat i urlen som står i

<enclosure url="kjbhjib"  type="image/png" />

det kan jeg jo ikke med

NodeList enclosure    = XPathAPI.selectNodeList(trae, "//channel/item/enclosure/text()");
Avatar billede arne_v Ekspert
10. november 2007 - 05:24 #5
Et lille eksempel til inspiration:

package november;

import java.io.StringReader;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

import org.apache.xpath.XPathAPI;

public class VariousXPath {
    public static void main(String[] args) throws Exception {
        String xml = "<demo>\r\n" +
                    "<title>bla bla</title>\r\n" +
                    "<item>\r\n" +
                    "<title>foo</title>\r\n" +
                    "<info url='foo.html'/>\r\n" +
                    "</item>\r\n" +
                    "<item>\r\n" +
                    "<title>bar</title>\r\n" +
                    "<info url='bar.html'/>\r\n" +
                    "</item>\r\n" +
                    "</demo>";
        System.out.println(xml);
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(new InputSource(new StringReader(xml)));
        Node title = XPathAPI.selectSingleNode(doc.getDocumentElement(), "//demo/title/text()");
        System.out.println("title = " + title.getNodeValue());
        NodeList itemtitle = XPathAPI.selectNodeList(doc.getDocumentElement(), "//demo/item/title/text()");
        for(int i = 0; i < itemtitle.getLength(); i++) {
            System.out.println("item title = " + itemtitle.item(i).getNodeValue());
        }
        NodeList iteminfourl = XPathAPI.selectNodeList(doc.getDocumentElement(), "//demo/item/info/@url");
        for(int i = 0; i < iteminfourl.getLength(); i++) {
            System.out.println("item info url = " + iteminfourl.item(i).getNodeValue());
        }
    }
}
Avatar billede mik28 Seniormester
10. november 2007 - 12:26 #6
Du er og bliver for sej
Avatar billede mik28 Seniormester
10. november 2007 - 12:28 #7
NodeList url          = XPathAPI.selectNodeList(trae, "//channel/item/enclosure/@url");
Avatar billede mik28 Seniormester
10. november 2007 - 13:01 #8
Det er jeg altså super glad for. Der er dog en ting til som undre mig lidt. Der er X antal elementer som hedder category i hver node (tror jeg nok det hedder). Har du et eksempel på hvordan jeg håndterer det
Avatar billede mik28 Seniormester
10. november 2007 - 13:03 #9
i eksemplet er der fire men der kan også væk 1 eller X
Avatar billede arne_v Ekspert
10. november 2007 - 15:55 #10
XPathAPI.selectNodeList(trae, "//channel/item/category");

må returnere en liste med de 4 categoeries
Avatar billede arne_v Ekspert
10. november 2007 - 15:57 #11
Husk at lookup kan nestes !

Utestet eksempel:

NodeList items = XPathAPI.selectNodeList(doc.getDocumentElement(), "//channel/item");
for(int i = 0; i < items.getLength(); i++) {
  NodeList cats = XPathAPI.selectNodeList(items.iem[i], "//item/category");
  // ny for løkke
}
Avatar billede arne_v Ekspert
27. januar 2008 - 05:52 #12
All set ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester