неработает Libxml

  • Автор темы s10
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S
#1
двс

запутался в мануале и немогу разобраться с установкой.

у меня php 5.0.4 под win
в моей книжке написано вот что : $dom = domxml_new_doc('1.0');
php на это отвечает : Call to undefined function domxml_new_doc()

что надо мне сделать для того что бы функция работала ?

phpinfo пишет что libxml(2.6.11) у меня есть и она active.

в мануале написано что :

Это расширение PECL не поставляется вместе с PHP.
Дополнительная информация, такая как новый версии,
скачивание, исходные файлы, информация о
разработчике и CHANGELOG, могут быть
найдены здесь: http://pecl.php.net/package/domxml.

скачать http://pecl.php.net/get/domxml - file not found

далее в мануале написано что (насколько я понял) для работы
с xml надо сделать библиотеку доступной в систем пасе. и вот её имя :
For PHP <= 4.2.0, it's libxml2.dll. For PHP >= 4.3.0, it's iconv.dll

и самое главное :
And as of PHP 5.0.0, iconv is compiled
into your Windows PHP binaries by
default so no extra DLL is needed.

возможно у меня банан в глазу -
но руки у меня растут из правильного места.
 
S
#3
2 shtogrin
ага. спасиба. теперь она создает объект.

продолжаю. дальше делаю так :

Код:
 $dom = domxml_new_doc("1.0");
$node = $dom->create_element("book");
var_dump($node);
результат - null.

при передаче $node в $dom->append_child($node);
пишет :
append_child() expects parameter 1 to be object, null given

т.е. create_element() не создает элемент ? что у меня опять неправильно ?

з.ы.
а правильно ли я поступаю вообще ? может существует другой способ генерации xml ?
я проста тока недавна начал этим заниматься. в общеобразовательных целях.

спасибо.
 
A

Andrew Stephanoff

#4
в 5 php есть объект DOM, лучше работать с ним, т. к. он несовместим с libxml.dll
 
S
#5
2 Andrew Stephanoff
вы уж простите - но теперь я уже точно ничего не понял... :D

вот почему один дядя пишет вот так
http://chregu.tv/domxml/src/dom.php
и при этом у него все работает, а у меня нет ?
мот уже мне пора как у него комменты на немецком писать. :D


у меня в кнжке рассматривается аналогичный пример генерации xml при помощи dom

Код:
 $dom = domxml_new_doc("1.0");
$book = $dom->append_child($dom->create_element("book"));
$title  = $book->append_child($dom->create_element("title"));
....
или мот приведите пример работы с xml(анализа и генерации xml документов), тока не руками типа цикла по массиву элементов и вывода их принтом, так я тоже умею.

спасибо.
 
A

Andrew Stephanoff

#7
Для интереса зашел на http://pecl.php.net/package/domxml и что я там увидел:
This extension allows you to operate on an XML document with the DOM API. It has been superseded by the DOM extension that ships with PHP 5.

Although it should be possible to use this old domxml extension with PHP 5, its use is highly discouraged, as there a very high potential for conflicts with the new dom extension.

If you are migrating from PHP 4 to PHP 5, the recommended best-practice is to port your domxml code to the much better dom code.

If you really must build domxml, you will need to obtain the sources from CVS and build them yourself.

See http://www.php.net/manual/en/install.pecl.php for instructions.

NOTE: if you're running PHP 4.x, the domxml is already part of the distribution.
Так говоришь, мануал читал? :unsure:
 
S
#8
двс

2 Andrew Stephanoff
ага. читал. опять читал. значицца дом говоришь.
т.е. то что вот тут, это корректно только для пхп 4 ? я правильно понял ?

а как с ним работать (с домом).
вот код из мануала :unsure:
Код:
<?php

$doc = new DOMDocument;

$node = $doc->createElement("para");
$newnode = $doc->appendChild($node);

echo $doc->saveXML();
?>
результат :
Код:
Warning: domdocument::domdocument() expects at least 1 parameter, 0 given in C:\s10\xml\test2.php on line 3

Fatal error: Call to undefined method domdocument::createElement() in C:\s10\xml\test2.php on line 5
это пример кода из DOMNode->appendChild()


а при чем тут вот это.
(в частности "Как поставить php5 DOM и XSL под win32")
Качать библиотеки и складывать их в system32, что бы "встроенный dom" работал ?

спасибо.
 
S
#10
если призвать конструктор без параметров то вот что
Warning: domdocument::domdocument() expects at least 1 parameter, 0 given in ...
если передать только версию

Код:
<?php
$dom = new DOMDocument('1.0');
?>
то вот что
Warning: domdocument::domdocument() [function.domdocument]: Entity: line 1: parser error : Start tag expected, '<' not found in...

Warning: domdocument::domdocument() [function.domdocument]: 1.0 in

Warning: domdocument::domdocument() [function.domdocument]: ^ in
если делать так (кстати тоже из мануала, в описании конструктора Domdocument)
Код:
<?php
$dom = new DOMDocument('1.0', 'iso-8859-1');
echo $dom->saveXML(); 
?>
то вот что

Warning: domdocument::domdocument() expects parameter 2 to be long, string given in ...
Fatal error: Call to undefined method domdocument::saveXML() in ...
я знаю что ошибка у меня. и что это я что то не доделал. но я уже незнаю куда смотреть.
прошу помощи. и терпения :rolleyes:
спасибо.
 
A

Andrew Stephanoff

#11
удали php и заново поставь :rolleyes: походу ты с копированием библиотек намудрил
у меня просто никогда такого не было (может у тебя как раз конфликт DOM и domxml?)
 
S
#12
2 Andrew Stephanoff

ты прав. конфликт старого и нового "домов"

достаточно в php.ini сделать так
и в коде вот так (я думаю firefox поднимал страницу из кэша)
Код:
<?php
header('Expires: Mon, 23 May 1995 02:00:00 GMT');

$doc = new DOMDocument('1.0','iso-8859-1');
$node = $doc->createElement("para");
$newnode = $doc->appendChild($node);

echo $doc->saveXML();
?>
и воуля, чистенький мой xml !!!
Код:
<?xml version="1.0" encoding="iso-8859-1"?>
<para/>
прошу простить за весь флуд.
просто немного запутался.
теперь все работает.
спасибо.
 

malor

Active member
30.04.2007
27
0
#13
Что такое 'part elements' в предложении "One XML document may use part elements to describe parts of books, another may use part elements to describe parts of cars. " ?
 
M

MajestiC

#14
Я вообще использую библиотеку MiniXML и не парюсь насчет проблем с dllками и т.д.
 
Статус
Закрыто для дальнейших ответов.