Get string van andere pagina

Status
Niet open voor verdere reacties.

kroepoek85

Gebruiker
Lid geworden
13 apr 2009
Berichten
10
Hallo allemaal,

Als jullie kunnen meekijken op pagina https://intra.informatica.hva.nl/content/mededelingen-overzicht/index.xml en dan op infomonitor drukken. Dan zie jullie een aantal meldingen staan.

Ik moet met behulp van javascript en misschien ook ajax de meldingen op een andere pagina weegeven voor de televisies.
Deze pagina wordt local op de pc uitgevoerd.


Kunnen jullie mij misschien uitleggen wat de beste manier is om de gegevens met javascript eruit te halen en die dan weer in een array zetten.

Ik heb wel iets van "document.body.innerHTML" gevonden maar ik weet niet precies hoe dat moet.
 
Laatst bewerkt:
Wanneer je informatie van een andere pagina (die je zelf niet -direct- beheert) ben je afhankelijk van de services die de website aanbiedt. (Tenzij je kan scrapen).

Jij wil alleen de mededelingen van deze website hebben en dan heb je volgens mij geluk. De website heeft hier een RSS feed van (https://intra.informatica.hva.nl/content/rss-feed/infomonitor.xml) die jij alleen nog maar hoeft uit te lezen.

Aangezien je aangeeft met een browser en javascript te willen werken (dus niet vereist) moet je zoeken naar javascript rss reader.
Als je daar niet direct uitkomt is het misschien handig om op w3schools te kijken naar AJAX en XML parsing.
 
Bedankt voor de reactie. Ik ben hiermee aan de slag gegaan en ben al een beetje om de goede weg. Alleen ik kom er niet helemaal uit.

Mijn code die ik nu heb is.

Code:
<html>
<head>
<script type="text/javascript">
function parseXML()
{
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, etc.
    {
    xmlDoc=document.implementation.createDocument("","",null);
    }
  catch(e)
    {
    alert(e.message);
    return;
    }
  }
xmlDoc.async=false;
xmlDoc.load("infomonitor.xml");
var items = xmlDoc.getElementsByTagName("item");
for(var i = 1; i <= items.length; i++){
document.getElementById("to").innerHTML=xmlDoc.getElementsByTagName("title")[i].childNodes[0].nodeValue;
document.getElementById("from").innerHTML=xmlDoc.getElementsByTagName("description")[i].childNodes[0].nodeValue;
document.getElementById("message").innerHTML=xmlDoc.getElementsByTagName("pubDate")[i].childNodes[0].nodeValue;
document.writeln('<p><b>To:</b> <span id="to"></span><br />');
document.writeln('<b>From:</b> <span id="from"></span><br />');
document.writeln('<b>Message:</b> <span id="message"></span>');
}
}
</script>
</head>
<body onload="parseXML()">
</body>
</html>

Hij doet het niet. ik krijg een blanco scherm te zien. Waarschijnlijk komt het door de document.writeln alleen ik kom er maar niet achter. Op internet staat dat het zo moet maar ik heb mijn twijfels.

Let niet op de design van de output dat komt later.
 
Laatst bewerkt:
Oke, maar je roept nu de xml aan via een een HTTP Request in javascript en dat kan alleen als het bestand (xml) op hetzelfde domein staat als het javascript¹. En ik neem aan dat dit niet het geval is bij jouw project. Dus dan zul je een "proxy" moeten maken met (bijvoorbeeld) PHP.
Je opent dan de XML in PHP (get_file_contents) en serveert deze dan weer als XML.

Je PHP file opgeslagen als (bijvoorbeeld) infomonitor.php :

PHP:
<?php header('Content-type: text/xml');
echo file_get_contents("https://intra.informatica.hva.nl/content/rss-feed/infomonitor.xml");
?>

en dan in je javascript verander je de load:

PHP:
xmlDoc.load("infomonitor.php");

Ik heb het zelf niet getest, maar ik denk dat het zo zou moeten werken.

EDIT: Zelf even getest, werkt dus niet :) Misschien met cURL.

¹ Het aanvragen van bestanden die op een ander domein staan (cross-domain) is vanwege veiligheidsrisico's niet mogelijk. Een beetje onterecht omdat er methodes denkbaar zijn om de veiligheid wel te waarborgen, maar waarschijnlijk weegt gemak van implementatie zwaarder dan vrijheid in ontwerp.
 
Laatst bewerkt:
ik kan nu wel direct toegang krijgen tot het xml bestand van de server. Het is bedoeling dat ik alles met een client-side script ga maken.
 
Oh, dat maakt het een stuk makkelijker. Maar je kan het dus alleen testen vanaf de server of met een tijdelijk eigen XML bestand.
 
Ik ben eruit hij doet het.

Er is nog wel 1 ding hoe kan ik uit een xml bestand een bepaalde serie regels eruit halen.

Alle xml bestanden zijn op dezelfde manier gemaakt.

Code:
<SPAN></SPAN></DIV></DIV><DIV id="editlink"></DIV><!-- /robots:noindex --></DIV><div id="content"><DIV id="column-1-of-2"><A name="comp000045e84ebf0000000f3f2c3d"><SPAN></SPAN></A><DIV class="picture-component">
<h3>Afwezigheid</h3>
<DIV class="body">
<P></P>


<UL>

    
<LI>??????</LI>


</UL>
</DIV></DIV><DIV class="component-spacing"><SPAN></SPAN></DIV></DIV><div id="column-2-of-2">

Ik moet de html tussen de <DIV class="picture-component"> en de </DIV></DIV><DIV class="component-spacing"><SPAN></SPAN></DIV></DIV><div id="column-2-of-2"> eruit halen zodat ik alleen deze regels over hou:

Code:
<h3>Afwezigheid</h3>
<DIV class="body">
<P></P>


<UL>

    
<LI>??????</LI>


</UL>

Ik zat eerst te ***** met split maar ik kom daar niet helemaal uit.
 
Heb je jQuery? Zo niet, dan zou je die eens moeten downloaden, die maakt dit soort dingen een stúk makkelijker ;)

in jQuery is het dit:
Code:
$('#column-2-of-2', xml ).html()

Als je dit gaat splitten ben je nog wel ff bezig... kun je op die xml pagina geen getElementById doen? Of werkt dat normaal echt alleen op de broncode van de huidige pagina?
 
Ik ben met jquery aan de slag gegaan.

Het is me nog niet gelukt. Ik ben gaan kijken naar de Wrap, after, before en filter. Maar geen van alle geven een duidelijk antwoord.

Alle html tag die tussen:
Code:
<DIV class="picture-component">
en
Code:
<DIV class="component-spacing">

moeten eruit gehaald worden.

Ik moet wel zeggen dat jquery een uitstekend middel is om je site functioneel goed te laten werken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan