Avatar billede maabjerg Nybegynder
26. februar 2010 - 00:03 Der er 9 kommentarer

Æ,ø og å i en XML fil, hvordan?

Hej eksperter

Jeg laver dataudtræk fra en mysql database til xml filer, men når der er æ,ø og å i dataen, så fejler XML filen.

Mit tegnsæt i xmlfilen er utf-8 og i databasen, er feltet indstillet til at være : utf-8-danish

Hvad kan årsagen være til at den fejler?

Her er min kode:

<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" );
header("Cache-Control: no-cache, must-revalidate" );
header("Pragma: no-cache" );
header("Content-Type: text/xml; charset=utf-8");

include($_SERVER['DOCUMENT_ROOT']."/config/config.inc.php");


$q = mysql_query("SELECT * FROM videos WHERE vidId='".$_REQUEST["vid"]."'", $MysqlConnRead);
$r = mysql_fetch_assoc($q);


$xml = '<?xml version="1.0"?>
';
$xml .= '<root>
';
       
$xml .= '<video id="' . $_REQUEST['vid'] . '">
';
$xml .= '<title>' . htmlspecialchars($r['vidName']) . '</title>
';
$xml .= '<description>' . htmlspecialchars($r['vidDescription']) . '</description>
';
$xml .= '<imageID>' . htmlspecialchars($r['vidThumbnailId']) . '</imageID>
';
$xml .= '</video>
';

$xml .= '</root>';    
       
echo $xml;
?>

Derudover hvis et felt er tomt og jeg gennem javascript loader xml filen ind (ajax), så sker der fejl, hvis et felt er tomt. Hvad kan jeg gøre der?

På forhånd tak for hjælpen.


Med venlig hilsen
Steffen
Avatar billede arne_v Ekspert
26. februar 2010 - 00:25 #1
htmlspecialchars i XML ??
Avatar billede arne_v Ekspert
26. februar 2010 - 00:26 #2
Muligvis kan du proeve med utf8_encode funktionen paa de ting som indeholder danske bogstaver.
Avatar billede maabjerg Nybegynder
26. februar 2010 - 00:39 #3
okay tak, det prøver jeg lige :)
Avatar billede maabjerg Nybegynder
26. februar 2010 - 00:41 #4
Fantastisk - det virker sku - tusind tak :)

Nu har jeg kun det sidste problem, det er når der ikke er noget indhold i fx. <description>, så fejler mit javascript. Hvad kan man gøre der? :)
Avatar billede arne_v Ekspert
26. februar 2010 - 01:12 #5
Fixe JavaScriptet så det kan klare tomme felter !?!?
Avatar billede maabjerg Nybegynder
27. februar 2010 - 16:29 #6
Ökay, hvordan gør jeg det? Min kode er:


if(infoObj.readyState == 4)
{     
var xmldoc = infoObj.responseXML;     
var videoNodes = xmldoc.getElementsByTagName("video");
var info_div = document.getElementById('divInfo');
var videoName = videoNodes[0].getElementsByTagName("title");
var imageID = videoNodes[0].getElementsByTagName("imageID");
var videoDescr = videoNodes[0].getElementsByTagName("description");       
       
info_div.innerHTML = "<span class=\"Title\">" + videoName[0].firstChild.nodeValue + "</span><br><br>";
       
info_div.innerHTML += "<img src=\"/getimage.php?id=\" class=\"thumbImage\">";

info_div.innerHTML += "<span class=\"descriptionText\">" + videoDescr[0].firstChild.nodeValue + "</span><div id=\"clear\"></div>";

På forhånd tak :)
Avatar billede maabjerg Nybegynder
27. februar 2010 - 16:41 #7
Jeg fandt ud af det :) Til jer, som gerne vil vide det, så laver jeg bare et tjek på om description har nogen childnodes.

if (videoNodes[0].getElementsByTagName('description')[0].hasChildNodes())
{
    var videoDescr = videoNodes[0].getElementsByTagName("description");       
videoDescr = videoDescr[0].firstChild.nodeValue;
}
else
{
var videoDescr = "";
}
Avatar billede arne_v Ekspert
27. februar 2010 - 22:08 #8
så smider jeg et svar for utf8_encode
Avatar billede arne_v Ekspert
26. april 2010 - 03:48 #9
så mangler du bare at acceptere
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