2013-04-04 25 views
8

Có thể ai đó có thể giúp tôi tìm ra giải pháp cho vấn đề của mình. Tôi cần thực hiện truy vấn XPath trong xml bên dưới để chỉ lấy các nút "Trường" là các nút con trực tiếp. Trong ví dụ dưới đây, truy vấn sẽ kéo các trường E1F1, E1F2 và E1F3. Cho đến nay tôi đang chạy truy vấn: //Field, nhưng tôi nhận được tất cả các trường (bao gồm cả các trường thuộc về E1_1 mà tôi không muốn).XPath chỉ chọn một loại nút trong các nút con trực tiếp

<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> 

Cảm ơn bạn !!

Trả lời

15

Sử dụng XPath tuyệt đối:

/Entity/Field 

// sẽ phù hợp với bất cứ nơi nào. Nếu bạn sử dụng một forwardslash đơn, trận đấu phải chính xác.

+0

Cảm ơn bạn, hoạt động. – gmesorio

0

Trong trường hợp của tôi, nút mong muốn nằm xa phần tử gốc (/ html), vì vậy câu trả lời được chấp nhận không phải là thứ tôi cần, sau một số công việc tìm kiếm, tôi tìm thấy childaxes thay vì descendant, tôi hy vọng điều này có thể giúp ai đó đang sử dụng scrapy để nhận một số thông tin từ html.

Các vấn đề liên quan