2016-08-23 2 views
1

Ich benutze plesk api, um Informationen von plesk zurückzugeben. Es wird in einen XML-Zeichenfolge zB setztWie gebe ich ein Plesk-API-XML-Paket in ein Array zurück

$response = $client->request($request); 

Die Zeichenfolge diese Informationen haben in

<database> 
<get-db> 
<result> 
<filter-id>domain name</filter-id> 
<id>34</id> 
<name>database</name> 
<type>mysql</type> 
...etc snip 
</result> 
<result> 
<filter-id>domain name</filter-id> 
<id>36</id> 
<name>database</name> 
<type>mysql</type> 
...etc snip 
</result> 
</get-db> 
</database> 

Was ich will, das Ergebnis in einen 2-dimensionalen Array setzen.

mag ich den Vornamen zu sein und ich brauche auch die ID

Ich habe mit preg_match versucht, die Tags zu bekommen, aber aus irgendeinem Grunde mir nur den ersten Tag bekommen. Und natürlich steckt die Funktion es noch nicht in ein zweidimensionales Array.

function tags($string, $tagname) 
{ 
    $pattern = "#<\s*?$tagname\b[^>]*>(.*?)</$tagname\b[^>]*>#s"; 
    preg_match($pattern, $string, $matches); 
    return $matches; 
} 

Dies ist, so kann ich mit dem Namen übereinstimmen und die ID Sie sehen bekommen.

Ich bearbeite bin, weil ich gerade etwas gefunden zu haben, die helfen können, aber ich habe es nicht geklappt noch

$xml=simplexml_load_string($response) or die("Error: Cannot create object"); 

Ich denke, das xml für die Analyse ist, aber kann nicht scheinen, um es zu bekommen zu analysieren mein xml-Paket richtig.

auch versucht, diese

$data = simplexml_load_string($response); 
echo $data->result[0]->name; 

Aber das scheint nicht zu funktionieren.

Antwort

1

I dies nun

$response = $client->request($request); // Send query to Plesk host 
echo $response; // show response 

$xml = simplexml_load_string($response); 


echo $xml->database->{'get-db'}->result[0]->name; 
// This gets the first tag called name 

//This loops through and gets every tag called name 
foreach ($xml->database->{'get-db'}->result as $result) 
{ 
    echo '<pre>'.$result->name.'</pre>'; 
//If I want to now I can put this result into an array here, but I find I do not need to now. As I only want to find the id of a matched database. So no array needed now, as I can use this loop 
} 
0

Verwendung Symfony Serializer Komponente gelöst haben, ich eine Methode in API-Client erstellt, die ein Array von XML kodieren, zu dekodieren und Plesk Antwort als Array senden.

/** 
* Encode array to XML, perform API request and 
* decode response to array. 
* 
* @param array $data 
* @return array 
*/ 
public function encodeAndRequest($data) 
{ 
    $encoder = new XmlEncoder('packet'); 
    return $encoder->decode($this->request($encoder->encode($data, 'xml')), 'xml'); 
} 
Verwandte Themen