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

109
17

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


Мне нужно получить это:
Источник, Timestamp, Subject, Action, Message


Я просто не понимаю. Может кто-то, пожалуйста, помогите мне с этим?

спросил(а) 2011-06-19T02:20:00+04:00 9 лет, 3 месяца назад
1
Решение
165

Этот код должен работать:


$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 здесь.


Надеюсь, это помогло и удачи!

ответил(а) 2011-06-19T02:28:00+04:00 9 лет, 3 месяца назад
57

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

function time2DatetimeUS($timestamp)
{
$datetime = date('Y-m-d 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";

ответил(а) 2013-01-07T13:44:00+04:00 7 лет, 8 месяцев назад
57

В интересах обучать вас ловить рыбу, я бы посоветовал вам проверить PHP Docs на SimpleXML.


Чтобы помочь вам начать, хотя.


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

ответил(а) 2011-06-19T02:25:00+04:00 9 лет, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема