Траблы с PHP5+XML
Решил поюзать XML. Как обычно столкнулся с траблой :)
Есть xml-файл :
<?xml version="1.0"?>
<newsLine>
<news date="1.1.2002">
<title>title 1</title>
<text>news text 1</text>
</news>
<news date="5.1.2002">
<title>title 2</title>
<text>news text 2</text>
</news>
<news date="10.1.2002">
<title>title 3</title>
<text>news text 3</text>
</news>
</newsLine>
Как с помощью DomDocument получить значение в теге <title>[значение]</title> или <text>[значение]</text>?
Смотрел ман, но че-т так и не нашел нужную функцию :(
Какой парсер лучше юзать с PHP5, а то их целая куча (DOMXML, DomDocument, xpath...)?
И вообще где мона почитать про PHP5+XML подробно?
Сэнкс.
Код:
$doc = new DOMDocument();
$doc->load("news.xml");
$items = $doc->getElementsByTagName("news");
for ($i = 0; $i < $items->length; $i++) {
echo $items->item($i)->nodeValue . "\n";
}
$doc->load("news.xml");
$items = $doc->getElementsByTagName("news");
for ($i = 0; $i < $items->length; $i++) {
echo $items->item($i)->nodeValue . "\n";
}
XML можно прочесть двуме методами: через DOM и SAX:
http://ru.wikipedia.org/wiki/DOM
http://ru.wikipedia.org/wiki/SAX
DOM XML это реализация DOM в PHP версии 4. В 5-ой версии DOM реализацию подогнали к стандарту как и положено. Поэтому там DOM функции.
В PHP есть и другие функции чтения XML. SimpleXML к примеру.
XPath это язык адресации XML деревьев. К примеру в твоем примере выражение /newsLine/news/title выбирет все заголовки к новостям. Вообще это очень мощный механизм ибо позволяет делать навигацию и фильтрацию результатов по дереву.
Если у тебя мега сложного ничего нету, то юзай simpleXML, т.к. он очень быстрый и встроен в ядро. Если тебе просто прочесть нужно, то XMLReader, этот вообще как формула 1. Пользуйся DOM функциями только в том случае, если это реально необходимо и больше никакими средствами это не решить, т.к. он оооочень медленный. Это некий танк, который всё может, но оочень медленно движется.
Цитата: shaelf
Если у тебя мега сложного ничего нету, то юзай simpleXML, т.к. он очень быстрый и встроен в ядро. Если тебе просто прочесть нужно, то XMLReader, этот вообще как формула 1. Пользуйся DOM функциями только в том случае, если это реально необходимо и больше никакими средствами это не решить, т.к. он оооочень медленный. Это некий танк, который всё может, но оочень медленно движется.
А если необходимо изменять\добавлять что-либо в XML-доке, тогда чем лучше пользоваться?
DOM наиболее мощное средство.
.... и наиболее медленное. Я всё сказал выше. Читай, смотри, что больше подходит.
Меня вот все еще гложат сомнения.... а не юзает ли сиплхмл дом дерево??
Пипл, а исчо не подскажете хорошей литературы (в бумажном виде) по XML и XSLT?
2alekciy Можешь посмотреть исходники пыха)))
Цитата: shaelf
2alekciy Можешь посмотреть исходники пыха)))
:D
Ну спасибо, до этого я как-то и сам допер ) Но совыряться в сорцах ни какого желания что-то пока нет. Видно нужно в клуб сбегать, там уж точно кто-то, да сорцы рыл.