2012-07-25 67 views
0

我有一個xml文檔,需要XPath表達式來根據兩個子節點值選擇節點值。 XML文件的結構是:基於兩個子節點值從XML文件獲取值

<catalog> 
<book id="123"> 
<title>Book123</title> 
<author>Author123</author> 
<genre>Genre123</genre> 
</book> 
. 
. 
. 
</catalog> 

我想根據標題和作者選擇的書。我已經使用了這個表達式,但是它顯示了一個表示這個表達式有一些無效標記的異常。我沒有弄清楚如何解決這個問題。 表達式是:

"book[title='" + txtBookTitle.Text + "' AND author='" + txtBookAuthor.Text + "']" 

任何機構都可以幫助我解決這方面的問題嗎?

+0

當您調試,是生成表達你希望它是什麼呢? – 2012-07-25 15:38:53

+0

你*有*在這裏使用XPath嗎?你可以使用LINQ到XML嗎?這將是非常簡單的,並且會避免你需要擔心他們的名字中帶有引號的作者。 – 2012-07-25 15:39:36

+0

@AustinSalonen:我需要獲得那本書的名稱和作者在表達中提到的價值。實際上,我使用了由根節點調用的SelectNodes()方法。在我的情況下,根節點是目錄。所以,我需要使它基於它的子節點值來提取節點。 – 2012-07-25 15:43:38

回答

2

你可以使用

//book[title[text()='Book123'] and author[text()='Author123']] 
+0

謝謝親愛的你做得很好。 – 2012-07-25 16:10:19

0

嘗試

//book[title='Book123' and author='Author123'] 

爲您的XPath。檢查你使用.Trim()修剪輸入空間可能是值得的。

TextBox1.Text.Trim() 
+0

正如您所建議的,我用它。沒有例外,但在此處顯示此消息:枚舉產生無結果。 – 2012-07-25 15:50:50

+0

我在這裏嘗試了XML/XPath組合:http://www.mizar.dk/XPath/Default.aspx,它突出顯示了正確的元素。也許在XML中有一個外殼問題或打字錯誤? – 2012-07-25 16:01:05