Проблемы XML XPath - PullRequest
       1

Проблемы XML XPath

0 голосов
/ 07 августа 2011

Я новичок в Xpath, практически только впервые посмотрел его сегодня, и у меня возникли некоторые проблемы с XPath, не загружающим изображения, определенные в XML.

Пока у меня есть:

<page name = "home"><br />
<image>
        <imagehome1>
            <imge>resp.jpg</imge><br />
            <class>right</class>
        </imagehome1>
        <imagehome2>
            <imge></imge><br />
            <class>right</class>
        </imagehome2>
        <imagehomebot>
            <imge>cfr.png</imge><br />
            <class>bottom</class>
        </imagehomebot>
    </image>
</page>

Как вы видите, я определяю 2 изображения, 1 в imagehome1 и 1 в imagehomebot, однако мой код XPath отображает только изображение из imagehomebot ..... и я понятия не имею, почему.

MyPHP XPath код:

<? 
                $nodes = $dom->xpath('/content/page/image/imagehome1');
                if (count($nodes) > 0) {
                    if(!(string)$nodes[0]->imge){
                        $class = "";}
                    else{
                    $class3 = (string)$nodes[0]->class;
                    $img3 = (string)$nodes[0]->imge;}
                }
            ?>
    <div class="<? echo $class ?>">
        <img src="imgs/<? echo $img1 ?>" />
    </div>

    <? 
                $nodes = $dom->xpath('/content/page/image/imagehome2');
                if (count($nodes) > 0) {
                    if(!(string)$nodes[0]->imge){
                        $class = "";}
                    else{
                    $class3 = (string)$nodes[0]->class;
                    $img3 = (string)$nodes[0]->imge;}
                }
            ?>

    <div class="<? echo $class ?>">
        <img src="imgs/<? echo $img2 ?>" />
    </div>

    </div>


    <div id="box2">

    <? 
                $nodes = $dom->xpath('/content/page/image/imagehomebot');
                if (count($nodes) > 0) {
                    if(!(string)$nodes[0]->imge){
                        $class = "";}
                    else{
                    $class3 = (string)$nodes[0]->class;
                    $img3 = (string)$nodes[0]->imge;}
                }
            ?>

<div class="<? echo $class3 ?>">
        <img src="imgs/<? echo $img3 ?>" />
    </div>

Вся помощь очень ценится.Спасибо

РЕДАКТИРОВАТЬ: только что еще раз быстро просмотрел мой код, и я думаю, я знаю почему, черт побери, скопируйте и вставьте хаха ...

1 Ответ

0 голосов
/ 07 августа 2011

Похоже, что вы хотите обработать все узлы, содержащие узлы imge, одинаково.

Попробуйте

'/ content / page / image / * [imge]'

чтобы получить imagehome1, imagehome2 и imagehomebot с одним xpath.Если вы хотите ограничить узлы фактическими строками, это может быть что-то вроде

/ content / page / image / * [imge / text ()]

Выражение в "[] »- это« предикат », который определяет критерии относительно узла« context »перед ним (« * »), который говорит, что получают все дочерние узлы изображения.(Я сделал это, потому что они были названы по-другому.)

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