Probleme la creearea unui fisier XML simplu din PHP

Aici postaţi orice este legat de tehnologiile "client side". HTML, HTML5, XHTML, CSS, CSS3, XML, Standarde
Manual JS: http://www.phpromania.net/jsmanual/index.html

Moderatori: eyecon, Moderatori

Misulache12
PHPRomania Supporter
Mesaje: 27
Membru din: Vin Aug 22, 2014 10:33 am

Probleme la creearea unui fisier XML simplu din PHP

Mesajde Misulache12 » Lun Feb 09, 2015 10:47 am

Nu reusesc sa creez un fisier xml simplu folosind functiile DOM/XML din PHP. Daca rulez phpinfo() din browser imi spune in sectiunea "DOM" ca DOM/XML este activat (enabled) si totusi urmatoarele instructiuni nu-mi creeaza textul xml dorit:

<?php

$doc = new DOMDocument('1.0');
// we want a nice output
$dom = new DOMDocument('1.0', 'iso-8859-1');
echo $dom->saveXML(); /* <?xml version="1.0" encoding="iso-8859-1"?> */
$xhtml = (string) $doc->saveXML($doc->doctype);
$xhtml .= "\n";
$xhtml .= (string) $doc->saveXML($doc->documentElement);
echo $xhtml;

$doc->formatOutput = true;
$doc->encoding = "UTF-8";

$root = $doc->createElement('book');
$root = $doc->appendChild($root);

$title = $doc->createElement('title');
$title = $root->appendChild($title);

$text = $doc->createTextNode('This is the title');
$text = $title->appendChild($text);

echo("Saving all the document:\n");
echo($doc->saveXML() . "\n");

echo("Saving only the title part:\n");
echo($doc->saveXML($title));

?>
Pe ecran imi apare doar textul: "Saving all the document:Saving only the title part:". Trag de aici concluzia ca functiile DOM/XML nu-si fac treaba. Exista sigur o optiune de instalare pe care o am, dar nu stiu care.



Misulache12
PHPRomania Supporter
Mesaje: 27
Membru din: Vin Aug 22, 2014 10:33 am

Re: Probleme la creearea unui fisier XML simplu din PHP

Mesajde Misulache12 » Lun Feb 09, 2015 1:14 pm

Cred ca am lucrat cam mult asupra scriptului de mai sus astfel incat nu se mai intelegea mare lucru. Sper ca scriptul urmator este mai clar. Ce ar trebui sa afiseze browser-ul la rularea script-ului fiindca mie nu-mi afisaza decat: "Saving all the document. Saving only the titlepart." fara a mai afisa nici macar caracterul "\n".
<?php
header("Cache-control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
?>
<?php
$doc = new DOMDocument('1.0');
$doc->formatOutput = true;
//$xhtml = (string) $doc->saveXML($doc->doctype);
//$xhtml .= "\n";
//echo $doc->saveXML();

$root = $doc->createElement('book');
$root = $doc->appendChild($root);
$title = $doc->createElement('title');
$title = $root->appendChild($title);

$text = $doc->createTextNode('This is the title');
$text = $title->appendChild($text);

echo "Saving all the document:\n";
echo $doc->saveXML() . "\n";
echo "Saving only the title part:\n";
echo $doc->saveXML($title);
//$doc->save("http://localhost/prog_loturi/test.xml")
?>

ViezuREX
Senior Member
Mesaje: 502
Membru din: Joi Dec 13, 2012 1:35 pm

Re: Probleme la creearea unui fisier XML simplu din PHP

Mesajde ViezuREX » Lun Feb 09, 2015 3:25 pm

De ce nu faci asa?

Cod: Selectaţi tot

$file = file_get_contents("fisier.xml");
echo $file;

Misulache12
PHPRomania Supporter
Mesaje: 27
Membru din: Vin Aug 22, 2014 10:33 am

Re: Probleme la creearea unui fisier XML simplu din PHP

Mesajde Misulache12 » Lun Feb 09, 2015 4:46 pm

De ce simplu daca se poate si complicat? Folosind functiile DOM din PHP vreau sa formez un DOM XML, si apoi, acest DOM, eventual, sa-l salvez ca fisier XML pe server. Puteam sa folosesc si functia loadXML() cu care sa incarc in DOM-ul declarat la inceput un sir care sa contina tag-urile XML care imi trebuie, dar am pornit asa si daca vrei sa te uiti pe site-ul cu manualul PHP la adresa http://php.net/manual/en/domdocument.savexml.php o sa vezi ca apare ca exemplu programul pe care l-am dat si eu mai sus iar ca raspuns la rularea acestui exemplu trebuie sa se afiseze:

Saving all the document:
<?xml version="1.0"?>
<book>
<title>This is the title</title>
</book>

Saving only the title part:
<title>This is the title</title

Mie mi se afisaza in browser:"Saving all the document:Saving only the title part:" si nu asta e ceea ce vreau eu.Se pare ca browser-ul interpreteaza tag-urile si nu le afisaza nici pe ele nici continutul lor. Pe de alta parte daca inserez la sfarsit instructiunea $doc->save("c:\test.xml"); imi da eroare eroarea: "Warning: DOMDocument::save(http://localhost/test/xml/test.xml): failed to open stream: HTTP wrapper does not support writeable connections in C:\Inetpub\wwwroot\prog_loturi\test_docxml.php on line 23 " desi am activat permisiunile la scriere pentru utilizatorul Everyone in folderul "C:\inetpub\wwwroot\test\".

ViezuREX
Senior Member
Mesaje: 502
Membru din: Joi Dec 13, 2012 1:35 pm

Re: Probleme la creearea unui fisier XML simplu din PHP

Mesajde ViezuREX » Mar Feb 10, 2015 7:47 am

Salut,

Am folosit exemplul dat si rezultatul este urmatorul:

Cod: Selectaţi tot

viezurex@dc:~$ cat 1.php
<?php

$doc = new DOMDocument('1.0');
// we want a nice output
$doc->formatOutput = true;

$root = $doc->createElement('book');
$root = $doc->appendChild($root);

$title = $doc->createElement('title');
$title = $root->appendChild($title);

$text = $doc->createTextNode('This is the title');
$text = $title->appendChild($text);

echo "Saving all the document:\n";
echo $doc->saveXML() . "\n";

echo "Saving only the title part:\n";
echo $doc->saveXML($title);

?>
viezurex@dc:~$ php 1.php
Saving all the document:
<?xml version="1.0"?>
<book>
  <title>This is the title</title>
</book>

Saving only the title part:
<title>This is the title</title>


Concluzia este ca exemplul dat merge, este foarte probabil ca problema pe care o intampini tu sa fie generata de setarile de afisare ale browser-ului, ca sa verifici asta incearca sa ii dai un View Source si sa vezi daca informatia XML este de fapt acolo.

Misulache12
PHPRomania Supporter
Mesaje: 27
Membru din: Vin Aug 22, 2014 10:33 am

Re: Probleme la creearea unui fisier XML simplu din PHP

Mesajde Misulache12 » Joi Feb 12, 2015 10:00 am

Salut,
Inteleg deci ca la tine in browser se afisaza inclusiv tag-urile xml si continutul lor la rularea script-ului php. Am verificat:
La comanda View->Source se afisaza in browser text-ul:
test.xmlC:\Inetpub\wwwroot\prog_loturi\test.xml<?xml version="1.0" encoding="UTF-8"?>
Saving all the document:
<?xml version="1.0" encoding="UTF-8"?>
<book>
<title>This is the title</title>
</book>

89

"89" cred ca este lungimea documentului xml pe care o afisaza c-da "echo $doc->saveXML()". Am folosit si functia DOMDocument::save() care isi face treaba si salveaza pe disc fisierul in format xml cu continutul dorit. La dublu click pe el mi se afisaza corect in browser. Inteleg de aici ca functia saveXML() nu lucreaza corect. Cred ca niste de setari ale PHP-ului nu sunt facute bine.

ViezuREX
Senior Member
Mesaje: 502
Membru din: Joi Dec 13, 2012 1:35 pm

Re: Probleme la creearea unui fisier XML simplu din PHP

Mesajde ViezuREX » Joi Feb 12, 2015 11:25 am

Incearca sa trimiti catre browser si header-ul de XML ca sa stie ce urmeaza sa afiseze.

Cod: Selectaţi tot

header('Content-type: text/xml');


Asta trebuie pusa inainte de primul echo daca nu folosesti output_buffering.

Misulache12
PHPRomania Supporter
Mesaje: 27
Membru din: Vin Aug 22, 2014 10:33 am

Re: Probleme la creearea unui fisier XML simplu din PHP

Mesajde Misulache12 » Vin Feb 13, 2015 2:34 pm

Salut,
header("Content-type: text/xml")
Am facut si aceasta adaugare la header si tot la fel merge. Cred ca o las in stand-by pana aflu mai multe despre PHP.
Multumesc pentru ajutorul de pana acum.


Înapoi la “HTML/JavaScript/CSS”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 27 vizitatori