2013-04-09 33 views
0

我在Java中使用XPath搞亂了,我似乎碰壁了。我有下面的XML文檔按值獲取數據

<?xml version="1.0" encoding="UTF-8"?> 
<database> 

    <student> 
     <index>1234</index> 
     <courselist> 
      <course name="analiza matematyczna 1" grade="5.0"/> 
      <course name="kurs programowania" grade="5.5"/> 
      <course name="logika i struktury formalne" grade="4.0"/> 
     </courselist> 
    </student> 

    <student> 
     <index>5678</index> 
     <courselist> 
      <course name="logika i struktury formalne" grade="5.0"/> 
      <course name="algebra z geometrią analityczną" grade="5.0"/> 
      <course name="kurs programowania" grade="5.5"/> 
     </courselist> 
    </student> 

</database> 

,我想檢索至少有一個4.0級的所有索引號。我可以單獨完成這些任務,但不能完全完成這些任務。我試圖

/database/student/courselist/course[@grade='4.0']/@name | /database/student/index/text() 

但結果是期望

[#text: 1234] #good 
name="logika i struktury formalne" #even better, I can display where 4.0 was achieved 
[#text: 5678] #bad, this student doesn't have even one 4.0 

我的問題比較遠,如果是這樣的查詢,甚至有可能在XPath的?當然,我將是工作的例子:)

+0

///course[@grade="4.0"]/@name試試這是給我corect結果 – eatSleepCode 2013-04-09 09:26:31

回答

4

您當前的實現提供5678也非常感激,因爲|運營商的XPath的意思是「和」:它選擇左側的兩種結果右側的結果。

你需要的是這樣的:。

/database/student[courselist/course[@grade='4.0']]/index/text() 

其內容爲「給我不得不與grade=4.0課程有courselist所有學生的元素,然後給我自己index元素的文本內容

+0

非常感謝,這是它:) – Robin92 2013-04-09 09:32:16