ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
1408
1408
EMPFEHLEN
-
Hallo,
Ich stehe leider mal wieder voll auf dem Schlauch und alles Googeln hat nichts geholfen. Also ich habe eine XML-Datei, sie sieht so aus (stark vereinfacht):
Code :1 2 3 4 5 6
<datenbank Id="1"> <fragebogen Id="fb1" Name="blabla" Text="blabla"> <topic Id="to1" Name="blablubb"></topic> <topic Id="to2"Name="blablubb"></topic> </fragebogen> </dtaenbank>
Und jetzt möchte ich das Element raussuchen, dass die Id=fb1 hat und in diesem Element möchte ich danach zum Beispiel das Attribute Name ändern. Aber irgendwie komme ich da nicht hin wo ich hin will.
Die Beispiele im Internet zu SimpleXML versteh ich irgendwie nicht, zumal sie nie das Problem in Kombination zeigen. Entweder sie zeigen Attribute an, oder sie ändernd en Inhalt zwischen den Tags, aber keine Attribute.
Wäre natürlich auch schön, wenn ich dann überall mit der Id etwas suchen und ändern könnte. Dann bräuchte es nur ein Skript für Fragebögen und Topics.
Vielen Dank,
Felix
-
Moin,
hier mal ein funktionierendes Beispiel dafür mit beiden Dingen:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
<pre><?php $string = <<<XML <datenbank Id="x1"> <fragebogen Id="fb1" Name="blabla" Text="blabla"> <topic Id="to1" Name="blablubb"></topic> <topic Id="to2" Name="blablubb"></topic> </fragebogen> </datenbank> XML; $xml = new SimpleXMLElement($string); //Fragebogen anhand Id suchen $result = $xml->xpath("fragebogen[@Id='fb1']"); while(list( , $node) = each($result)) { //Name-Attribut ändern $node['Name']='Blubbbla'; } //Test obs geändert wurde echo htmlentities($xml->asXML()); ?>- per xpath() kannst du das/die Element(e) anhand eines XPath-Pfades selektieren
- mit
ein Attribut ändernCode :1
$Knoten['Attribut']="Wert";
- per xpath() kannst du das/die Element(e) anhand eines XPath-Pfades selektieren
-
Hallo Sven,
Schon einmal vielen Dank für deine Antwort. Hier mal meine Datei "save.php":
Die POST-Variablen kommen alle korrekt an. Nun möchte ich also in parentId=fb1 das Attribute "Beschreibung" ändern (attr=Beschreibung) und zwar in value=bla. Das Skript läuft auch durch, allerdings hat er nichts geändert, die XML-Datei sieht aus wie vorher. Ich muss das leider so dynamisch machen, weil es gibt frageboegen, fragebogen, topics, fragen, antwortoptionen und jedes davon mit einem unterschiedlich großen Satz von Attributen. Daher dachte ich mir, wenn ich die Id des Elementes habe und das Attribute welches ich ändern will, dann sollte das nicht so schwierig sein.PHP-Code:<?php
// Collect POST data
$parentId = $_POST['parentID'];
$attr = $_POST['attr'];
$value = $_POST['value'];
// Search tags for the given id
$frageboegen = new DOMDocument();
$frageboegen->load("../siob2010.xml");
$xpath = new DOMXPath($frageboegen);
$elem = $xpath->query('//*[@Id="'.$parentId.'"]');
// Change the value of the node
$attrNode = $elem->item(0);
$attrNode[$attr]=$value;
// Save the XML
echo $frageboegen->save("../siob2010.xml");
?>
Hab deinen Code probiert, aber da gibt es beim erzeugen des SimpleXMLDocuments einen Fehler. Irgendetwas mit den Klammern erwartet er anders, leider ist die XML vom Dozenten und ich darf da nichts rumbasteln.
Danke,
Felix
-
Da gehts jetzt ein bissl durcheinander, weil du jetzt DOMDocument verwendest.
Ändere das Setzen des Attributes,
alt:
Code :1 2
$attrNode = $elem->item(0); $attrNode[$attr]=$value;
neu:
Code :1 2
// Change the value of the node $elem->item(0)->setAttribute($attr,$value);
...aktiviere mal während der Entwicklung das error_reporting, das hätte dir eine betreffende Fehlermeldung ausgegeben
Ähnliche Themen
-
Skript arbeitet nach ändern der Attribute nicht mehr
Von bolshi im Forum PHPAntworten: 1Letzter Beitrag: 23.07.09, 22:47 -
Attribute in Objektliste nach gecheckten Checkboxen setzen
Von schlumsch im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 27.10.08, 19:35 -
Objekte nach einem ihrer Attribute sortieren
Von geisendorf im Forum JavaAntworten: 3Letzter Beitrag: 23.01.08, 09:12 -
simpleXML: Attribute mit Doppelpunkt
Von dsturm im Forum PHPAntworten: 2Letzter Beitrag: 17.09.07, 12:43 -
Attribute bei css
Von alphadesigns im Forum CSSAntworten: 3Letzter Beitrag: 07.09.05, 16:57





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren