2013-04-04 13 views
8

Może ktoś może mi pomóc znaleźć rozwiązanie mojego problemu. Muszę wykonać zapytanie XPath w poniższym xml, który pobiera tylko węzły "Field", które są bezpośrednimi węzłami potomnymi. W poniższym przykładzie zapytanie powinno zawierać pola E1F1, E1F2 i E1F3. Do tej pory używam kwerendy: //Field, ale otrzymuję wszystkie pola (w tym te należące do E1_1, których nie chcę).XPath wybierz jeden typ węzłów tylko w bezpośrednich węzłach potomnych

<Entity id="E1"> 
    <Field id="E1F1"></Field> 
    <Field id="E1F2"></Field> 
    <Field id="E1F3"></Field> 
    <Entity id="E1_1"> 
    <Field id="E1_1F1"></Field> 
    <Field id="E1_1F2"></Field> 
    <Field id="E1_1F3"></Field> 
    </Entity> 

Dziękuję !!

Odpowiedz

15

bezwzględną XPath:

/Entity/Field 

// będzie pasował wszędzie. Jeśli używasz pojedynczego forwardslasha, dopasowanie musi być dokładne.

+0

Dziękuję, to działa. – gmesorio

0

W moim przypadku, węzeł poszukiwany jest daleko od elementu głównego (katalogu/html), więc przyjął odpowiedź nie jest to, co potrzebne, po jakimś pracy wyszukiwania, uważam childaxes zamiast descendant, mam nadzieję, że ten może pomóc komuś, kto używa scrapy, aby uzyskać pewne informacje z html.

Powiązane problemy