2014-05-04 75 views
0

我嘗試使用以下XPath表達式:初學者XPath表達式錯誤

nodeList = root.SelectNodes("/moviedb/movie[genres="Thriller"]"); 
nodeList = root.SelectNodes("/moviedb/movie[contains(genres, "+ ElementValue +")]"); 

其中ElementValue是用戶輸入值

對於第一線,我得到這樣的錯誤:

Error 4 ) expected
Error 6 Invalid expression term ')'

雖然第二個表達式返回0

在我在c#中使用這個表達式之前,我沒有他們在網上,他們工作。 我的XML看起來是這樣的:

<moviedb> 
<movie> 
    <imdbid>tt2226321</imdbid> 
    <genres>Thriller</genres> 
    <languages>English</languages> 
    <country>USA</country> 
    <rating>8</rating> 
    <runtime>155</runtime> 
    <title>The Dark Knight</title> 
    <year>2014</year> 
    </movie> 
    <movie> 
    <imdbid>tt1959490</imdbid> 
    <genres>Action,Adventure,Drama</genres> 
    <languages>English</languages>           
    <country>USA</country> 
    <rating>6.5</rating> 
    <runtime>138</runtime> 
    <title>Noah</title> 
    <year>2014</year> 
    </movie> 
</moviedb> 

感謝

+0

鍵入錯誤:字符串常量內雙引號前失蹤'「\」'。您可能需要閱讀有關字符串常量的內容,然後才能使用引號組合引入XPath。 –

回答

2

當你需要採取特殊措施字符串引號處理,如插入任何報價將會使編譯器認爲你是結束還是開始一個新的字符串。

要麼使用\"轉義序列表明,你的意思是插入而不是字符串的結尾引號的編譯器,或@符號,並使用2個引號(""

nodeList = root.SelectNodes(@"/moviedb/movie[genres=""Thriller""]"); 

nodeList = root.SelectNodes("/moviedb/movie[genres=\"Thriller\"]"); 
+0

+1。您還可以使用單引號......並且,當您使用'concat'時,如果文本中混合了引號,則仍然很痛苦...... –