Получить атрибуты и значения с помощью SimpleXML

Я действительно не понимаю, как использовать 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 .

Чтобы помочь вам начать работу.

  1. Используйте simplexml_load_file() или simplexml_load_string() для анализа вашего XML- simplexml_load_string()
  2. Это вернет объект – используйте var_dump() или print_r() чтобы увидеть, как он выглядит.
  3. Пройдите этот объект, чтобы получить нужные вам атрибуты.

Попробуйте следующее:

 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";