Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: X технологии > XPath поиск.


Автор: Reptor 17.11.2008, 11:51
есть у меня вот такой XML

Код

<?xml version="1.0" encoding="UTF-8"?>
<root>
       <element>
                 <path1>path</path1>
                 <path2>pathd2</path2>
        </element>
</root>


и вот есть методы поиска по документу в который я передаю 
 $res = $xml->findNode("/root/element/path1");
//       echo $res->length;
       print_r($res);
        var_dump($res);

и вывод мне показывает что ничего не найдено... smile  почему??? Ведь в XML есть этот путь

вот вывод переменной $res

DOMNodeList Object
(
)
object(DOMNodeList)#56 (0) {
}


Код

private function initializationXPath(){
        $this->xpath = new DOMXpath($this->DOMDoc);  // тут $this->DOMDoc это  $this->DOMDoc = new DOMDocument(self::version, self::encoding);
    }

.......................

 function findNode($path){
        $this->initializationXPath();
        return $this->xpath->query($path);

    }




Автор: awers 17.11.2008, 17:37
еще один слеш к началу запроса

Автор: Reptor 17.11.2008, 17:51
awers,  так тоже безрезультатно

Автор: Reptor 17.11.2008, 19:20
почему может ничего не находить?....я уже не знаю как сделать..  smile 

Автор: jsa 18.11.2008, 05:15
Цитата(Reptor @  17.11.2008,  16:51 Найти цитируемый пост)
// тут $this->DOMDoc это  $this->DOMDoc = new DOMDocument(self::version, self::encoding);

а где содержимое то?

Автор: Reptor 18.11.2008, 15:58
jsa, содержимое есть.... вот же оно я ж давал в начале

перед поиском зделал echo saveXML()

Код

<?xml version="1.0" encoding="UTF-8"?>
<root>
       <element>
                 <path1>path</path1>
                 <path2>pathd2</path2>
        </element>
</root>

Автор: Nigel 18.11.2008, 21:07
awers, никакой там слэш не нужен.

Reptor, Вы, кажется, не до конца прочитали документацию по DOMXPath.
Код

$XML = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<root>
       <element>
                 <path1>path</path1>
                 <path2>pathd2</path2>
        </element>
</root>
XML;

$doc = new DOMDocument;

$doc->LoadXML($XML);

$xpath = new DOMXPath($doc);

$node = $xpath->query('/root/element/path1');

var_dump($node->item(0)->nodeValue);

А что simplexml не нравится?
Код

$XML = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<root>
       <element>
                 <path1>path</path1>
                 <path2>pathd2</path2>
        </element>
</root>
XML;

$xml = simplexml_load_string($XML);

$nodes = $xml->xpath('//element/*');

foreach($nodes as $node) {

    echo $node.'<br />';

}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)