xpath seçimi ile yardımcı

1 Cevap php

Ben bir eleman için bir id öznitelik değeri var.

ben sadece kendi çocuklarını (hepsi değil soyundan) seçmek istiyorum.

i kullanılmış

$childElements = $xml->xpath('//entity[@id=212323]');
print_r($childElements);

ama bu TÜM kökenini seçmek ve onları basacaktır. ben sadece 1 nesil çocukları seçmek istiyorum. ben bunu nasıl yapabilirim?

<entity id=212323>
    <this>asd</this>
    <this>asd</this>
    <this>asd</this>
    <this>
        <notThis>asd</notThis>
        <notThis>asd</notThis>
        <notThis>asd</notThis>
    </this>
</entity>

(Böylece tüm soyunu fecthing sürecini yavaşlatmak istiyorsunuz, hiyerarşi çok uzun yol ve onun akıllı değil gereksiz veri almak için).

1 Cevap

Bu kullanabilirsiniz:

//entity[@id=212323]/child::*[not(boolean(child::*))]

çocuk yok, sadece düğümleri seçmek için. Bu yeterince iyi değil ve bekliyoruz Ayrıca durumlarda gibi:

<entity id=212323>
    <this>asd</this>
    <this>asd</this>
    <this>asd</this>
    <this>
        text node 1
        <notThis>asd</notThis>
        <notThis>asd</notThis>
        <notThis>asd</notThis>
        text node 2
    </this>
</entity>

Biraz daha araştırma yapmak gerekir. Bu örnekte, text node 1 ve text node 2 <this> elemanının çocuk olarak kabul edilir. Sen xPath ifadesinde (<notThis>asd</notThis> gibi) diğerleri bu iki düğüm farklı nasıl (bunun mümkün olup olmadığından emin değilim) bulmak gerekir.