2010-12-02 17 views
0

Mein Code erstellt eine XML-Ausgabe von MySQL-Dataset. Dann muss ich es in HTML umwandeln. Ich speicherte es in einer PHP-Variable und versuchte, es in transformToXML ($ XML) als Parameter zu verwenden, aber es erhöht erwartet es ein Objekt hier. Wie konvertiere ich diese XML-Ausgabe in ein Objekt, das hier als Parameter verwendet werden soll. Hier ist mein Code:Verwendung/Konvertierung von XML-Zeichenfolge als Parameter in Xsl-Umwandlung

<?php 

// i am using the resultset to build an XML DOM but you can do whatever you like with it ! 

    header("Content-type: text/xml"); 
    $conn = new mysqli("localhost", "babar", "k4541616", "spec", 3306); 
    // one non-recursive db call to get the message tree ! 
    $result = $conn->query("call message_hier(1)"); 
    //--$result = $conn->query("call message_hier_all()"); 
    $xml = new DomDocument; 
    $xpath = new DOMXpath($xml); 
    $msgs = $xml->createElement("messages"); 
    $xml->appendChild($msgs); 
    // loop and build the DOM 
    while($row = $result->fetch_assoc()){ 
    $msg = $xml->createElement("message"); 
    foreach($row as $col => $val) $msg->setAttribute($col, $val); 

    if(is_null($row["parent_msg_id"])){ 
    $msgs->appendChild($msg); 
    } 
    else{ 
    $qry = sprintf("//*[@msg_id = '%d']", $row["parent_msg_id"]); 
    $parent = $xpath->query($qry)->item(0); 
    if(!is_null($parent)) $parent->appendChild($msg); 
    } 
    } 
    $result->close(); 
    $conn->close(); 
    $save = $xml->saveXML();//-> Here i save mxl in php var 
    //echo $save; 

    $xslt = new XSLTProcessor(); 
    $XSL = new DOMDocument(); 
    $XSL->load('msg.xsl'); 
    $xslt->importStylesheet($XSL); 
    header('Content-Type: application/xml'); 
    print $xslt->transformToXML($save); //->error: expects an object here, string given. 

    ?> 

Antwort

0

Sie benötigen, um Ihre XML-String zurück in ein Objekt über DOMDocument::loadXML() drehen, bevor Sie es verwenden können.

+0

Wie benutze ich es? – XCeptable

+0

Nun, Sie könnten die 'save()' Methode darauf verwenden, wenn Sie möchten. Siehe den Link. –

+0

Eigentlich möchte ich fragen, wo soll ich es verwenden? Wenn Sie in der letzten Zeile Ergebnisse drucken möchten, d. H. "Print $ xslt-> transformToDoc ($ save)", dann habe ich es und das gleiche Ergebnis verwendet. Oder Sie erwähnen, es früher zu verwenden, um xml zu domdoc zu konvertieren? – XCeptable