我正在解决这个问题:
假设您得到一个包含如下所示的xml日志文件的字符串
<log>
<entry id='1'>
<message>
Application Started
</message>
</entry>
<entry id='2'>
<message>
Application Ended
</message>
</entry>
</log>
实现函数getIdsByMessage,该函数返回包含特定消息的条目的ID。
id应该是整数值,并且不需要对数组进行排序
例如上面的XML日志和消息“ Application Ended”的getIdsByMessage应该返回[2]
这是我到目前为止所拥有的:
<?php
function getIdsByMessage(string $xml, string $message) : array
{
DOMdocument::getElementsByTagName('message')
}
$xml = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<log>
<entry id="1">
<message>Application started</message>
</entry>
<entry id="2">
<message>Application ended</message>
</entry>
</log>
XML;
print_r(getIdsByMessage($xml, 'Application ended'));
答案 0 :(得分:1)
目前无法对其进行测试,但我认为类似的方法会起作用。
<?php
function getIdsByMessage(string $xml, string $message) : array
{
$xml = simplexml_load_string($xml);
$msgIds = array();
foreach ($xml->entry as $entry) {
if ($entry->message == $message) {
array_push($msgIds, $entry['id']);
}
}
return $msgIds;
}
$xml = '<?xml version="1.0" encoding="UTF-8"?>
<log>
<entry id="1">
<message>Application started</message>
</entry>
<entry id="2">
<message>Application ended</message>
</entry>
</log>';
print_r(getIdsByMessage($xml, 'Application ended'));