2012-03-01 27 views
5

Tôi có một số XML như thế này:biểu XPATH rằng các trận đấu trên giá trị thuộc tính "true"

<engine-set> 
    <engine host-ref="blah1.com"> 
    <property name="foo" value="true"/> 
    <property name="bar" value="true"/> 
</engine> 
<engine host-ref="blah2.com"> 
    <property name="foo" value="true"/> 
    <property name="bar" value="false"/> 
</engine> 
</engine-set> 

Tôi muốn để phù hợp trên tất cả các yếu tố cơ mà có một tài sản nút con với một tên bằng "thanh" và và giá trị bằng "true". Tôi đang tìm một thực tế là "true" xuất hiện trong XML của tôi là nguyên nhân khiến tình trạng của tôi luôn luôn được đánh giá là đúng trong một biểu thức XPath. Có cách nào không? Tôi đang sử dụng Python và lxml.

EDIT:

biểu xpath của tôi là (không hoạt động) là: // công cụ [(tài sản/@ name = 'bar' và tài sản/@ value = "true")]

Cảm ơn,

+0

biểu xpath ur là gì? – Jayy

+1

Downvoting, bởi vì chúng tôi không thể cho bạn biết những gì bạn đã làm sai nếu bạn không cho chúng tôi biết những gì bạn đã làm. –

Trả lời

5

Vì vậy, bạn đang nói

//engine[property[@name='bar' and @value='true']] 

mang đến cho bạn quá nhiều kết quả? Bởi vì đối với tôi nó chỉ cho một.

2

Bạn đã thử biểu thức XPath nào?

Sau đây dường như làm việc tốt trong việc "blah1.com" nhưng không "blah2.com": //engine[property[@value="true"][@name="bar"]]

Hãy nhớ rằng bạn cần phải bọc lấy các giá trị kiểm tra thông số của bạn trong dấu ngoặc kép.

17

Tôi muốn để phù hợp trên tất cả các yếu tố cơ

này là:

//engine 

rằng có một tài sản

nút con Bây giờ này trở thành:

//engine[property] 

với một tên bằng "bar"

Tuy nhiên cụ thể hơn:

//engine[property[@name = 'bar']] 

và và giá trị bằng "true".

Cuối cùng:

//engine[property[@name = 'bar' and @value = 'true']] 
+0

Tôi nhận ra xpath của tôi đã làm việc tất cả cùng, tôi đã làm một cái gì đó ngu ngốc. Tuy nhiên, Dimitre đã có câu trả lời sau tôi. Cảm ơn! –

+3

@ G-Man sau đó xin vui lòng chấp nhận câu trả lời của mình, vì vậy ông được tín dụng cho nó. – qris

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