Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „simplexml: Werte von einer XML in eine andere übertragen“

koma05

Aktives Mitglied

hallo.
habe 2 fast baugleiche xml-dateien. xmlalt und xmlneu.

in xmlalt sind werte die nach xmlneu übertragen werden sollen:

xmlalt
Code:
<demo>
  <view hlookat="-64" vlookat="0" hlookatmin="-180" hlookatmax="180" vlookatmin="-90" vlookatmax="90"/>
    <hotspot
        name = "Hs_4030_4008_01"
        style="hotspot_style"
    />   
</demo>
xmlneu
Code:
<demo>
    <view hlookat="0" vlookat="0" hlookatmin ="-180" hlookatmax ="180" vlookatmin ="-90" vlookatmax ="90" />
</demo>

wie bekomme ich die <view> zeile und <hotspot> in die neue xml.

<hotspot> soll möglichst am ende vor </demo> eingefügt werden.


mein lösungsansatz:
PHP:
    $xmlalt = simplexml_load_file($xmlfilealt);
    $xmlneu = simplexml_load_file($xmlfileneu);

    foreach($xmlalt->view->attributes() as $a => $b) {
        echo $a,'="',$b,"\"\n";
    }

foreach($xmlalt->hotspot as $hotspot) {
}


bitte um hilfe
danke
 

Duddle

Posting-Frequenz: 14µHz

AW: simplexml: Werte von einer XML in eine andere übertragen

Es kommt darauf an, ob du tatsächlich nur bestimmte Zeilen kopieren willst oder den gesamten Inhalt von alt zu neu, ob dabei auf Duplikate geachtet werden soll usw.

Eine sehr simple und nicht sehr schicke Lösung ist diese:

PHP:
<?php
$xmlfilealt = "alt.xml";
$xmlfileneu = "neu.xml";
$xmlalt = simplexml_load_file($xmlfilealt);
$xmlneu = simplexml_load_file($xmlfileneu);

$out = "";
foreach($xmlalt->children() as $child) {
    $out .= $child->asXML();
}
foreach($xmlneu->children() as $child) {
    $out .= $child->asXML();
}
$xmlkomplett = simplexml_load_string("<demo>".$out."</demo>");
echo $xmlkomplett->asXML();

?>

Das sollte selbsterklärend sein.



Duddle
 

koma05

Aktives Mitglied

AW: simplexml: Werte von einer XML in eine andere übertragen

passt leider nicht so ganz.

hab eine "zwischenfrage":

mit
PHP:
    foreach($xmlalt->view->attributes() as $a => $b) {
        echo $a,'="',$b,"\"\n";
    }
kann man ja die attribute von <view> auslesen. kann man hier nicht gleich diese ermittelten attribute in die neue xml schreiben?


edit:
PHP:
    $xmlneu->view['hlookat'] = $xmlalt->view['hlookat'];
    $xmlneu->view['vlookat'] = $xmlalt->view['vlookat'];
    $xmlneu->view['hlookatmin'] = $xmlalt->view['hlookatmin'];
    $xmlneu->view['hlookatmax'] = $xmlalt->view['hlookatmax'];
    $xmlneu->view['vlookatmin'] = $xmlalt->view['vlookatmin'];
    $xmlneu->view['vlookatmax'] = $xmlalt->view['vlookatmax'];
    
    $xmlneu->asXML($xmlfileneu);

funktioniert!

nur steht jetzt in der neu erzeugten xml datei in zeile 1 folgender inhalt:
Code:
<?xml version="1.0"?>
kann man irgendwo per parameter einstellen, damit diese zeile nicht generiert und eingefügt wird?
 
Zuletzt bearbeitet:

koma05

Aktives Mitglied

AW: simplexml: Werte von einer XML in eine andere übertragen

erzeuge bzw überschreibe die bestehende xmlneu mittels:
PHP:
    //mit substr wird die erste zeile gelöscht, die asXML() einfügt
    $xmlstring = substr($xmlneu->asXML(), 22);
    
    $datei = fopen($xmlfileneu, "w+");    
    fwrite($datei, $xmlstring);
    fclose($datei);
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
175.189
Beiträge
2.582.077
Mitglieder
67.259
Neuestes Mitglied
SaschMasch1312
Oben