由于名称中存在撇号,无效的 XPath 表达式异常

ame*_*war 5 java xml 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");
Run Code Online (Sandbox Code Playgroud)

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

current.name: "Répartition par secteur d'activité"

错误信息

ben*_*y23 3

您可以通过加倍来转义引号:

current.Name = current.Name.replace("'", "''");
Run Code Online (Sandbox Code Playgroud)

编辑:

对于 Xpath 1.0,您可以尝试以下操作:

String xp1 = "//page[@name=\""+current.Name+"\"]" ;
Run Code Online (Sandbox Code Playgroud)

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

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