【问题标题】:How to ignore ' ' in Xpath?如何在 Xpath 中忽略“”?
【发布时间】:2017-01-16 10:33:08
【问题描述】:

我试图弄清楚如何在编写 xpath 时忽略定位器中的“”。

例如:

//affiliation-summary[@ng-if='oaProfileStatus.oa.workflowState === 'PENDING_CONFIRMATION''] 

现在我要做的是分别在待处理和确认中忽略 P 之前和 N 之后的 ' ,以便 Xpath 不会将它们视为标识符的起点和终点。

如果我想要实现的目标还不清楚,那么这就是我们在 java 中所做的事情

System.out.println("\"Hello");

忽略 " 终止字符串,以便打印 "Hello"。

如何在 Xpath 中实现这一点?

【问题讨论】:

  • 你可以用双引号代替,所以@nf-if="oa....TION'"
  • @ThorbjørnRavnAndersen 双引号确实有效,我可以继续。但是仍然有办法实现有问题的行为吗?
  • 用双引号括起来的 ' 字符不需要转义
  • @SelThroughJava 据我所知。但是,您可以将值存储在变量中(在 XSLT 中的工作方式与在 Java 中的工作方式不同)并改用它。

标签: java xml xpath selenium-webdriver webdriver


【解决方案1】:

在 XPath 1.0 中,您可以使用 " 作为字符串分隔符将 ' 放入字符串中,反之亦然。当 XPath 嵌套在 XML 文档(例如 XSLT、XSD 或 XProc)中时,您可能还需要将其作为 XML 字符引用进行转义,或者当 XPath 嵌套在 Java/C# 字符串中时,您可能需要将其转义为\'\"

在 XPath 2.0 中还有一个附加选项:对于由单引号分隔的字符串,您可以包含双引号 ('Don''t do it!'), 对于由双引号分隔的字符串,您可以包含双引号 ("Don't say ""I can't""")。

XPath-within-XSLT 的一个有用技巧,尤其是 1.0,是使用变量,例如

<xsl:variable name="quot">"</xsl:variable>
<xsl:variable name="apos">'</xsl:variable>
<xsl:variable name="sentence" 
 select="concat('Don', $apos, 't say ', $quot, 'I can', $apos, 't', $quot)"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 2011-05-25
    • 2011-02-06
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多