Avatar billede kodak Mester
07. april 2010 - 10:24 Der er 12 kommentarer og
1 løsning

Html kode i XML

Hej jeg vil i følgendene kode gerne kunne udlæse HTML koder fra min XML fil
Hvordan gør jeg det uden at min xml fil brokker sig over at det ikke er muligt?

PHP kode
<?php
$read = $_GET['read'];
$rdr = new XMLReader();
$rdr->xmL(file_get_contents("xml/xml.xml"));
while($rdr->read()){
switch ($rdr->nodeType) {
case XMLReader::TEXT:
$s = $rdr->value;
break;
case XMLReader::ELEMENT:
if($rdr->localName == 'news') {
$no = $rdr->getAttribute('no');
}
break;
case XMLReader::END_ELEMENT:
if($rdr->localName == 'navn') {
$navn = $s;
} else if($rdr->localName == 'startdato') {
$pic1 = $s;
} else if($rdr->localName == 'stopdato') {
$stopdato = $s;
} else if($rdr->localName == 'pic') {
$pic = $s;
} else if($rdr->localName == 'fpic') {
$fpic = $s;
} else if($rdr->localName == 'tekst') {
$tekst = $s;
} else if($rdr->localName == 'fulltekst') {
$fulltekst = $s;
} else if($rdr->localName == 'readlink') {
$readlink = $s;
} else if($rdr->localName == 'readtext') {
$readtext = $s;
} else if($rdr->localName == 'arkivtjek') {
$arkivtjek = $s;
} else if($rdr->localName == 'news') {
if ($readlink==$read) {
echo "<p class=\"t01\"><img src=\"images/e02.gif\" alt=\"\" width=\"16\" height=\"9\" border=\"0\">  <b>" . $navn . "</b></p>";
echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"95%\" align=\"right\">";
echo "<tr valign=\"top\">";
echo "                <td align=\"right\"> <img src=\"images/" . $pic . "\" width=\"116\" height=\"105\" alt=\"\" border=\"0\" vspace=\"5\"><br>";
echo "                  <img src=\"images/" . $fpic . "\" width=\"116\" height=\"105\" alt=\"\" border=\"0\" vspace=\"10\"><br>";
echo "    </td>";
echo "    <td>";
echo "<p class=\"t01\">" . nl2br($fulltekst) . "</p>";
echo "    </td>";
echo "</tr>";
echo "</table>";
echo "    </td>";
}
}
break;
}
}
?>


XML kode

<?xml version='1.0' encoding='UTF8'?>
<newst>
    <site no="1">
        <navn1>Velkommen til Overskrift</navn1>
        <pic1>temp01.png</pic1>
        <epic1>temp03.png</epic1>
        <tekst1>Kort tekst</tekst1>
        <fulltekst1>Den lange tekst som skal indholde HTML koder</fulltekst1>
        <readlink1>index1</readlink1>
        <readtext1>Læs mere 4</readtext1>

        <navn2>Bliv medlem</navn2>
        <pic2>temp01.png</pic2>
        <epic2>temp02.png</epic2>
        <tekst2>kort text 2</tekst2>
        <fulltekst2>Land tekst 2som også skal kunne indholde HTML koder</fulltekst2>
        <readlink2>bliv_medlem</readlink2>
        <readtext2>Læs mere 5</readtext2>
    </site>
</newst>
Avatar billede erikjacobsen Ekspert
07. april 2010 - 11:26 #1
Hvis det er en tekst skal vel blot encode den, så fx < bliver til &lt; ... osv.
Avatar billede kodak Mester
07. april 2010 - 12:53 #2
Ja men hvordan og til hvad?
Avatar billede olebole Juniormester
07. april 2010 - 13:44 #3
<ole>

Normalt vil man vel CDATA-escape koden:

<element>
<![CDATA[
    <p>Her kan du skrive HTML<br>- endda i flere linjer</p>
]]>
</element>


/mvh
</bole>
Avatar billede erikjacobsen Ekspert
07. april 2010 - 13:56 #4
Det dur jo ikke, Ole, hvis der indgår "]]>" i strengen.
Avatar billede olebole Juniormester
07. april 2010 - 14:22 #5
Nej, det er ganske vist! Hvis der er tale om en liggende ASCII-fremstilling af Det Kinesiske Tårn i Tivoli, kan der meget vel opstå problemer med ]]>  ;D
Avatar billede erikjacobsen Ekspert
07. april 2010 - 14:33 #6
Jah, eller hvis man er ved at skrive en tekst om XML.
Avatar billede kodak Mester
07. april 2010 - 14:53 #7
jeg havde tænkt at kunne bruge
<![CDATA[
    <p>Her kan du skrive HTML<br>- endda i flere linjer</p>
]]>

Men en kunne ikke finde ud af hvordan jeg fik det ind i php'en
Avatar billede olebole Juniormester
07. april 2010 - 15:20 #8
Erik >> Ja, kinesisk XML! Du har selvfølgelig ret  ;o)

kodak >> Hvad er det præcist, du ikke kan finde ud af omkring PHP og CDATA? Er det ikke bare:

$code = "<![CDATA[<p>Her kan du skrive HTML<br>- endda i flere linjer</p>]]>";
print $code;
Avatar billede kodak Mester
07. april 2010 - 15:50 #9
Hvad er det du vil have at jeg skal skrive det
den eneste linie det behøves på er denne:
$fulltekst
echo "<p class=\"t01\">" . nl2br($fulltekst) . "</p>";
Avatar billede olebole Juniormester
07. april 2010 - 16:21 #10
Det kan jeg ikke få til at hænge sammen med koden i dit spørgsmål. Al din HTML skal da CDATA-escapes
Avatar billede kodak Mester
07. april 2010 - 17:11 #11
Kan jeg gøre det med det hele på en gang?
Avatar billede kodak Mester
03. juni 2010 - 15:48 #12
echo "<p class=\"t01\">" . nl2br($fulltekst) . "</p>";
Virkede
Avatar billede kodak Mester
03. juni 2010 - 15:50 #13
Jeg havde bare uploadet forkert fil.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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