java – 由于名称中存在撇号而导致的XPath表达式异常无效

我得到以下代码的无效Xpath异常.

current.Name = current.Name.replace("'", "\'");
System.out.println(current.Name );
String xp1 = "//page[@name='"+current.Name+"']" ;
Element n = (Element) oDocument.selectSingleNode(xp1+"/Body/contents");

当current.name中的字符串中包含撇号时发生异常

current.name:\”Répartitionparsecteur d’activité“

错误信息

最佳答案 你可以通过加倍来逃避报价:

current.Name = current.Name.replace("'", "''");

编辑:

对于Xpath 1.0,您可以尝试以下方法:

String xp1 = "//page[@name=\""+current.Name+"\"]" ;

即使用双引号而不是单引号来分隔名称(尽管这意味着您将无法使用双引号搜索字符串.

另请注意,对于第二种解决方案,您无需替换引号.

点赞