Avatar billede laah Nybegynder
04. december 2006 - 14:11 Der er 10 kommentarer

Udskift html <title> med værdi fra xml-fil

Hej,

Hvordan henter en værdi fra en xml-fil og bruger denne i <title> på et html-dokument?

eks.

xml-fil (minxmlfil.xml):
<data>
<title>Min title</title>
</data>

html-fil (minhtmlfil.htm)
<head>
<title>Min title (fra xml-fil)</title>
</head>
Avatar billede olebole Juniormester
04. december 2006 - 14:14 #1
<ole>

Hvordan bruger du XML'en?

/mvh
</bole>
Avatar billede laah Nybegynder
04. december 2006 - 16:52 #2
Hej Ole,

Som i dette eksempel (som du hjalp mig med): http://www.eksperten.dk/spm/748251

Det går fint med at bruge data fra xml-filen i body - men nu skal jeg også bruge dem i <head> på html-filen. - og så er jeg på bar bund igen...

Med venlig hilsen

Lars
Avatar billede olebole Juniormester
05. december 2006 - 09:47 #3
Mon det er noget à la dette, du mener:

// Hent teksten i XML-dokumentet:
    var sText = xmlDoc.getElementsByTagName("title")[0].firstChild.nodeValue;

// Opret et title-element:
    var oTitle = document.createElement("title");
// Sæt teksten ind i title-elementet:
    oTitle.appendChild( document.createTextNode(sText) );

// Indsæt title-elementet i (X)HTML-dokumentets DOM:
    document.getElementsByTagName("head")[0].appendChild( oTitle );
Avatar billede olebole Juniormester
05. december 2006 - 09:51 #4
I denne linje:

// Sæt teksten ind i title-elementet:
    oTitle.appendChild( document.createTextNode(sText) );

- foretager vi faktisk to ting på én gang, svarende til:
    var oText = document.createTextNode(sText);
    oTitle.appendChild(oText);
Avatar billede laah Nybegynder
05. december 2006 - 14:51 #5
Hej Ole,

Kan desværre ikke rigtig få det til at virke - forsøger at indsætte title-elementet i <title> med: <Title><span id="title">&nbsp;</span></Title>. Men det giver mig bare flg. title: "<span id="title"> </span>"

Kan det være fordi at function loadXML() først loades i <body>?

Min (x)html kode se nu således ud:

<script type="text/javascript">
var xmlDoc;
function loadXML()
{
// code for IE
if (window.ActiveXObject)
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async=false;
  xmlDoc.load("data.xml");
  getmessage();
  }
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation &&
document.implementation.createDocument)
  {
  xmlDoc=document.implementation.createDocument("","",null);
  xmlDoc.load("data.xml");
  xmlDoc.onload=getmessage;
  }
else
  {
  alert('Din browser kan ikke håndtere det script, som bruges på denne side');
  }
}function getmessage()
{
// Hent teksten i XML-dokumentet:
    var sText = xmlDoc.getElementsByTagName("title")[0].firstChild.nodeValue;

// Opret et title-element:
    var oTitle = document.createElement("title");
// Sæt teksten ind i title-elementet:
    oTitle.appendChild( document.createTextNode(sText) );

// Indsæt title-elementet i (X)HTML-dokumentets DOM:
    document.getElementsByTagName("head")[0].appendChild( oTitle );
}
</script>

<Title><span id="title">&nbsp;</span></Title>

</head>

<body onload="loadXML()">
Avatar billede olebole Juniormester
05. december 2006 - 14:56 #6
Du kan ikke have et span-element i et title-element. Title-elementet kan kun indeholde tekst  :)
Avatar billede laah Nybegynder
05. december 2006 - 15:06 #7
Hej Ole,

Som tidligere nævnt, så er jeg javascript-nybegynder... :-)
-Hvordan hiver jeg så den title-text ud?

Med venlig hilsen

Lars Aagaard
Avatar billede olebole Juniormester
05. december 2006 - 15:45 #8
Du kan godt slette dette:
    <Title><span id="title">&nbsp;</span></Title>

Den kode, jeg skrev, finder selv et element som dette:
    <title>En eller anden titel</title>

- i XML-dokumentet.

Derefter sætter scriptet automatisk et title-element (med den aktuelle tekst) ind i HTML-dokumentets head-element  =)
Avatar billede laah Nybegynder
05. december 2006 - 16:19 #9
Hej Ole,

Hvis jeg fjerner det som du foreslår, så får jeg ingen title.
Min xml-fil indeholder et et <title> element:

<?xml version="1.0"?>
<data>
<title>En title</title>
</data>

Er den kode, som du har skrevet placeret korrekt i mit javascript herover?

/Lars
Avatar billede laah Nybegynder
06. december 2006 - 15:59 #10
var sText = xmlDoc.getElementsByTagName("title")[0].firstChild.nodeValue;
document.title= sText;

Ser ud til at virke... takker for opstarts hjælpen :-)

/Lars
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