Я действительно не понимаю, как использовать SimpleXML в PHP.
Вот пример моего XML-файла:
<?xml version="1.0" encoding="UTF-8" ?> <eventlog version="1.1"> <event source="Firewall" timeStamp="1308433939" type="0" deleted="0" bodyLength="218"> <subject>Network access detected</subject> <action>Allowed</action> <message>The program c:\xampp\apache\bin\httpd.exe attempted to connect to the Internet. The program used the protocol TCP on port 80.</message> </event> </eventlog>
Мне нужно получить это: Source, Timestamp, Subject, Action, Message
Я просто не понимаю. Может кто-нибудь, пожалуйста, помогите мне с этим?
Этот код должен работать:
$xml = new SimpleXMLElement($xmlString); $source = $xml->event->attributes()->source; $timestamp = $xml->event->attributes()->timestamp; $subject = $xml->event->subject; $action = $xml->event->action; $message = $xml->event->message;
… где $ xmlString – это строка файла xml.
Ознакомьтесь с тем, как использовать simpleXML здесь .
Надеюсь, это помогло и удачи!
В интересах научить вас ловить рыбу , я бы посоветовал вам проверить документы PHP на SimpleXML .
Чтобы помочь вам начать работу.
simplexml_load_file()
или simplexml_load_string()
для анализа вашего XML- simplexml_load_string()
var_dump()
или print_r()
чтобы увидеть, как он выглядит. Попробуйте следующее:
function time2DatetimeUS($timestamp) { $datetime = date('Ymd H:i:s', $timestamp); return $datetime; } $db = new SQLiteDatabase("AutoAnalysis.sqlite", 0666, $err); $xml = new SimpleXMLElement($logs_antivirus_local, NULL, TRUE); foreach ($xml->event as $a) { $source = $a->attributes()->source; $timestamp = $a->attributes()->timeStamp; $datetime = time2DatetimeUS("$timestamp"); $subject = $a->subject; $action = $a->action; $message = $a->message; } $query = "INSERT INTO BitDefender(id, datetime, module, sujet, action, message) VALUES ('', '$datetime', '$source', '$subject', '$action', '$message')"; $results = $db->queryexec($query); echo " $datetime $source $subject";