XPath

2013-04-04 25 views
5

Tôi cần để có được giá trị của <mathcolor> yếu tố cho các phần tử có giá trị <colorvalue> 2. Xin vui lòng sửa biểu thức XPath đưa ra dưới đây:XPath

XPath Expression thử:

/colors/child::color/child::mathcolor[colorvalue='2'] 

Mẫu XML:

<?xml version="1.0"?> 
<colors> 
    <color> 
     <mathcolor>#007dc5</mathcolor> 
     <textcolor>C=100 M=40 Y=0 K=0</textcolor> 
     <colorvalue>2</colorvalue> 
    </color> 
    <color> 
     <mathcolor>#ed1b34</mathcolor> 
     <textcolor>C=0 M=100 Y=85 K=0</textcolor> 
     <colorvalue>3</colorvalue> 
    </color> 
</colors> 

Trả lời

3

Hầu như, hãy thử:

/colors/child::color[colorvalue='2']/child::mathcolor/text() 

hoặc đơn giản hơn

/colors/color[colorvalue='2']/mathcolor/text() 
+0

'con :: 'là thừa, phải không? Tôi thích câu trả lời ban đầu của bạn – MattH

+0

Có nhưng tôi muốn sử dụng ví dụ chính xác siva2012 được sử dụng trong câu hỏi của anh ấy. – TheEwook

+0

Có thể cần '/ text()' ở cuối để lấy giá trị * * – MattH

0

tôi thích để nhắm mục tiêu các yếu tố thực tế mà bạn muốn đầu tiên với // mathcolor. Phần còn lại là để nói rằng nếu bạn tiếp tục xuống cấu trúc, bạn sẽ thấy một nút anh chị em có tên colorvalue với một nút văn bản = 2.

//mathcolor[./following-sibling::colorvalue[./text()='2']] 
+0

Cân nhắc thêm giải thích cho câu trả lời của bạn. –

+0

Điều gì xảy ra nếu thứ tự của các con của 'màu' không được xác định? Có lẽ '// mathcolor [../ colorvalue = '2']/text()' sẽ ổn định hơn? –

+0

Tôi thích nó, không chắc tôi đã nhìn thấy rất nhiều lần mà thứ tự của các nút con thay đổi. –