Почему этот xpath не оценивается как true? - PullRequest
0 голосов
/ 01 марта 2010

Я пытаюсь оценить узел XML с помощью xpath, и я не уверен, почему он не оценивается как true.

XML

<?xml version="1.0"?>
<users>
    <user>
        <username>tom</username>
        <password>d644cd4b1c72f563855e689d46d9198e</password>
    </user>
    <user>
        <username>jeff</username>
        <password>smith</password>
    </user>
</users>

Когда я отправляю форму, этот скрипт называется

    <?php
        //needed for firePHP in firebug
        include('FirePHPCore/fb.php');
        ob_start();

        $error = false;
        if(isset($_POST['login'])) {
            $username = preg_replace('/[^A-Za-z0-9]/', '', $_POST['username']);
            $password = md5($_POST['password']);


            if(file_exists("../users.xml")) {

                $xmlobject = simplexml_load_file("../users.xml");
                fb("username is: ".$username); //returns tom
                fb($xmlobject->xpath("//*[username='tom']")); //returns the entire array of elements. How do i make it return just the node value?

                //why does this evaluate to false?
                if($username == $xmlobject->xpath("//*[username='tom']")) {
                    fb("got here");
                } else {
                    fb("got here instead");
                }   
            }
            $error = true;
 }
?>

1 Ответ

4 голосов
/ 01 марта 2010

Вместо этого

if($username == $xmlobject->xpath("//*[username='tom']"))

Мне просто нужно было сделать

if($xmlobject->xpath("//*[username='tom']"))

Теперь он проверяет, существует ли хотя бы один узел <username> со значением узла "tom".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...