我正在使用plesk api从plesk返回信息。 它被放入一个xml字符串,例如
$response = $client->request($request);
该字符串在
中包含此信息<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>
我想将结果放入二维数组中。
我希望第一个成为名字,我也需要id
我尝试使用preg_match来获取标签,但出于某种原因我只获得了第一个标签。当然,功能还没有把它放在一个二维数组中。
function tags($string, $tagname)
{
$pattern = "#<\s*?$tagname\b[^>]*>(.*?)</$tagname\b[^>]*>#s";
preg_match($pattern, $string, $matches);
return $matches;
}
这样我可以匹配名称并获得您看到的ID。
我正在编辑,因为我刚刚找到了可能会有所帮助的内容,但我还没有完成它
$xml=simplexml_load_string($response) or die("Error: Cannot create object");
我认为这是用于解析xml,但似乎无法正确解析我的xml包。
也尝试了这个
$data = simplexml_load_string($response);
echo $data->result[0]->name;
但这似乎不起作用。
答案 0 :(得分:1)
我现在已经解决了这个问题
qo.exe --list-types
答案 1 :(得分:0)
使用Symfony Serializer Component,我在API客户端创建了一个方法,将数组编码为xml,发送到Plesk并将响应解码为数组。
/**
* 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');
}