Alanlı elemanlarının tüm çocuklar için XPath dize

0 Cevap php

Sadece XPath ile başladı ve PHP'nin SimpleXML nesnelerle uygulama bulunuyor kullanarak alıyorum. Şu anda //zuq:* SimpleXML verilen bir belgede zuq öneki ile nesneleri bir dizi oluşturmak için kullanıyorum. Ancak, ne olursa olsun ad tüm soyunu başvurmak için SimpleXML nesneler istiyorum. I //child::zuq:* kullanarak çalıştı, ancak oluşturduğu SimpleXML ağaçlar tam olması görünmüyor.

Esasen, yakalanan nesneler zuq dahil olursa olsun ad tüm alt öğeleri içeren belge boyunca zuq ad tüm üst düzey nesneler, olmalıdır.

Her SimpleXML kök nesnesi tüm soyunu içeren (örneğin zuq gibi) verilen ad en üst düzey belge elemanı verilmiş bir belgeden tl;dr: How can I create a SimpleXML nesne ağacı dedi ne olursa olsun soyundan ad eleman? XPath bir koşul değil ama benim okuma dayalı iyi bir seçim gibi görünüyor.


test.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:zuq="http://localhost/zuq">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
    <h1>Heading</h1>
    <p>Paragraph</p>
    <zuq:region name="myRegion">
        <div class="myClass">
            <h1><zuq:data name="myDataHeading" /></h1>
            <p>
                <zuq:data name="myDataParagraph">
                    <zuq:format type="trim">
                        <zuq:param name="length" value="200" />
                        <zuq:param name="append">
                            <span class="paragraphTrimOverflow">...</span>
                        </zuq:param>
                    </zuq:format>
                </zuq:data>
            </p>
        </div>
    </zuq:region>
</body>
</html>

$sxml = simplexml_load_file('test.html');
$sxml_zuq = $sxml->xpath('//zuq:*/descendant-or-self::node()');
print_r($sxml_zuq);

Üretir:

Array
(
[0] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [name] => myRegion
            )

        [div] => SimpleXMLElement Object
            (
                [@attributes] => Array
                    (
                        [class] => myClass
                    )

                [h1] => SimpleXMLElement Object //I don't know why these don't contain their zuq descendants
                    (
                    )

                [p] => SimpleXMLElement Object
                    (
                    )

            )

    )

[1] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [name] => myRegion
            )

        [div] => SimpleXMLElement Object
            (
                [@attributes] => Array
                    (
                        [class] => myClass
                    )

                [h1] => SimpleXMLElement Object
                    (
                    )

                [p] => SimpleXMLElement Object
                    (
                    )

            )

    )

[2] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [class] => myClass
            )

        [h1] => SimpleXMLElement Object
            (
            )

        [p] => SimpleXMLElement Object
            (
            )

    )

[3] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [class] => myClass
            )

        [h1] => SimpleXMLElement Object
            (
            )

        [p] => SimpleXMLElement Object
            (
            )

    )

[4] => SimpleXMLElement Object
    (
    )

[5] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [name] => myDataHeading
            )

    )

[6] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [class] => myClass
            )

        [h1] => SimpleXMLElement Object
            (
            )

        [p] => SimpleXMLElement Object
            (
            )

    )

[7] => SimpleXMLElement Object
    (
    )

[8] => SimpleXMLElement Object
    (
    )

[9] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [name] => myDataParagraph
            )

    )

[10] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [name] => myDataParagraph
            )

    )

[11] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [type] => trim
            )

    )

[12] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [type] => trim
            )

    )

[13] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [name] => length
                [value] => 200
            )

    )

[14] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [type] => trim
            )

    )

[15] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [name] => append
            )

        [span] => ...
    )

[16] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [name] => append
            )

        [span] => ...
    )

[17] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [class] => paragraphTrimOverflow
            )

        [0] => ...
    )

[18] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [class] => paragraphTrimOverflow
            )

        [0] => ...
    )

[19] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [name] => append
            )

        [span] => ...
    )

[20] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [type] => trim
            )

    )

[21] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [name] => myDataParagraph
            )

    )

[22] => SimpleXMLElement Object
    (
    )

[23] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [class] => myClass
            )

        [h1] => SimpleXMLElement Object
            (
            )

        [p] => SimpleXMLElement Object
            (
            )

    )

[24] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [name] => myRegion
            )

        [div] => SimpleXMLElement Object
            (
                [@attributes] => Array
                    (
                        [class] => myClass
                    )

                [h1] => SimpleXMLElement Object
                    (
                    )

                [p] => SimpleXMLElement Object
                    (
                    )

            )

    )

)

0 Cevap