Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Probleem php, simplxml ja dom'ga (uus mure) märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
Keios
HV vaatleja
Keios

liitunud: 17.05.2004




sõnum 13.11.2008 11:43:08 Probleem php, simplxml ja dom'ga (uus mure) vasta tsitaadiga

Soovin php-ga xml faili muuta: lisada, kustutada ja muuta nodesid.

Google abiga olen midagi sellist kokku kirjutanud aga miskipärast ei tööta salvestamine icon_sad.gif
Dom objekt on mängu toodud, sest ei leidnud simplexml-lt salvestamise võimalust.

<?php
   $dom = new domDocument;
   $dom->load("pildid.xml");
   $s = simplexml_import_dom($dom);

   $uuspilt = $s->addChild('pilt');
   $uuspilt->addChild('fail', 'karu.jpg');
   $uuspilt->addChild('kirjeldus', 'karuke');

   $dom = dom_import_simplexml($s);

   print $dom->ownerDocument->saveXML();
   $dom->save("kana.xml")
?>


Igaksjuhuks ka näites kasutatud xml faili sisu:

<?xml version="1.0" encoding="utf-8"?>
<pildid>
   <pilt>
     <jrknr>1</jrknr>
     <fail>hobune.jpg</fail>
     <kirjeldus>minu hobune</kirjeldus>
   </pilt>
   <pilt>
     <jrknr>2</jrknr>
     <fail>rong.jpg</fail>
     <kirjeldus>rong</kirjeldus>
   </pilt>
   <pilt>
     <jrknr>3</jrknr>
     <fail>ahven.jpg</fail>
     <kirjeldus>minu ahven</kirjeldus>
   </pilt>
   <pilt>
     <jrknr>4</jrknr>
     <fail>nugis.jpg</fail>
     <kirjeldus>minu nugis</kirjeldus>
   </pilt>
</pildid>

_________________
"I don't count my sit-ups, I only start counting when it starts hurting because they’re the only ones that count". - Muhammad Ali


viimati muutis Keios 11.12.2008 20:20:45, muudetud 1 kord
Kommentaarid: 11 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 10
tagasi üles
vaata kasutaja infot saada privaatsõnum
karu
HV kasutaja

liitunud: 08.08.2002




sõnum 13.11.2008 12:14:43 Re: Probleem php, simplxml ja dom'ga vasta tsitaadiga

Keios kirjutas:
Soovin php-ga xml faili muuta: lisada, kustutada ja muuta nodesid.

Google abiga olen midagi sellist kokku kirjutanud aga miskipärast ei tööta salvestamine icon_sad.gif
Dom objekt on mängu toodud, sest ei leidnud simplexml-lt salvestamise võimalust.

<?php
   $dom = new domDocument;
   $dom->load("pildid.xml");
   $s = simplexml_import_dom($dom);

   $uuspilt = $s->addChild('pilt');
   $uuspilt->addChild('fail', 'karu.jpg');
   $uuspilt->addChild('kirjeldus', 'karuke');

   $dom = dom_import_simplexml($s);

   print $dom->ownerDocument->saveXML();
   $dom->save("kana.xml")
?>

sa kirjutad $dom'i üle DOMElement'iga

edit: peaks olema parem lahendus
http://ee.php.net/manual/en/function.simplexml-element-asXML.php
$dom = dom_import_simplexml($s)->ownerDocument;

   print $dom->saveXML();
   $dom->save("kana.xml")
Kommentaarid: 1 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 1
tagasi üles
vaata kasutaja infot saada privaatsõnum
Keios
HV vaatleja
Keios

liitunud: 17.05.2004




sõnum 11.12.2008 20:20:20 vasta tsitaadiga

Väga suur tänu!



Nüüd järgmine probleem.

Laen dom'i abil failist xmli, impordin ta simplexml-i ja siis soovin kahe node sisu üksteisega ära vahetada. Aga mingil müstilisel kombel kirjutatakse muutujate väärtus üle ja tulemuseks on kaks samasuguse sisuga node'i.
(Vahemuutujad (a,b,c,d) ja echod võtsin appi probleemi otsimiseks).

Probleem lühidalt - echode (rida 28 ja 31) väljund peaks olema täpselt sama.

Php kood:

<?php
$rada = "";
$andmeteFail = "data.xml";

$doc = new DOMDocument();
$doc->load( $andmeteFail );

$direction = $_GET['direction'];
$movableID = $_GET['movid'];
if ($direction != null && $movableID != null)
{
    $teinePiltID;
   
    if ($direction === 'right')
        $teinePiltID = $movableID + 1;
    else if ($direction == 'left')
        $teinePiltID = $movableID - 1;
   
    //DOM --> SIMPLEXML
    $galerii = simplexml_import_dom($doc);         
    $uusGalerii = $galerii;
      
   $a = $galerii->pilt[(int)$teinePiltID]->fail;
    $b = $galerii->pilt[(int)$teinePiltID]->kirjeldus;
   
   $c = $galerii->pilt[(int)$movableID]->fail;
    $d = $galerii->pilt[(int)$movableID]->kirjeldus;
   echo "a = $a<br /> b = $b<br /> c = $c<br /> d = $d <br /><br />";
   
   $uusGalerii->pilt[(int)$movableID]->fail = $a;
   echo "a = $a<br /> b = $b<br /> c = $c<br /> d = $d <br /><br />";
   $uusGalerii->pilt[(int)$movableID]->kirjeldus = $b;
   
   $uusGalerii->pilt[(int)$teinePiltID]->fail = $c;
   $uusGalerii->pilt[(int)$teinePiltID]->kirjeldus = $d;
   
    //SIMPLEXML --> DOM
    $tmpDoc = dom_import_simplexml($uusGalerii);
   
    $doc->importNode($tmpDoc, true);
    $doc->saveXML();
    $doc->save($andmeteFail);   
}
?>


ja xml:


<?xml version="1.0" encoding="utf-8"?>
<pildid>
  <pilt>
    <jrknr>0</jrknr>
    <fail>suksu.JPG</fail>
    <kirjeldus>
      Sporthobune
    </kirjeldus>
  </pilt>
  <pilt>
    <jrknr>1</jrknr>
    <fail>nugis.jpg</fail>
    <kirjeldus>Sportnugis</kirjeldus>
  </pilt>
  <pilt>
    <jrknr>2</jrknr>
    <fail>karu.JPG</fail>
    <kirjeldus>
      karu pilt
    </kirjeldus>
  </pilt>
</pildid>

_________________
"I don't count my sit-ups, I only start counting when it starts hurting because they’re the only ones that count". - Muhammad Ali
Kommentaarid: 11 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 10
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Probleem php, simplxml ja dom'ga (uus mure)
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.