【问题标题】:beginner XPath expression error in C#C# 中的初学者 XPath 表达式错误
【发布时间】:2014-05-04 00:47:29
【问题描述】:

我正在尝试使用以下 XPath 表达式:

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

其中 ElementValue 是用户输入值

对于第一行,我得到如下错误:

错误 4 ) 预期
错误 6 无效的表达式术语 ')'

而第二个表达式返回 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>

谢谢

【问题讨论】:

  • 印刷错误:字符串常量内的双引号前缺少'\'。在深入研究带有引号的 XPath 之前,您可能需要阅读有关字符串常量的信息。

标签: c# xml regex xpath


【解决方案1】:

在处理字符串中的引号时,您需要采取特殊步骤,因为插入任何引号会使编译器认为您正在结束或开始一个新字符串。

要么使用\" 转义序列向编译器显示您的意思是插入引号而不是字符串的结尾,要么使用@ 符号并使用2 个双引号("")

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

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

【讨论】:

  • +1。您也可以使用单引号...当您的文本包含引号时,使用 concat 仍然很痛苦...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-22
  • 2019-03-04
  • 2011-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多