【问题标题】:Selecting Jsoup element with text containing slash选择带有包含斜杠的文本的 Jsoup 元素
【发布时间】:2015-05-22 11:54:35
【问题描述】:

我正在尝试使用以下代码选择一个在其自己的文本中包含斜杠的标签

Document testDocument = Jsoup.parse("<p>wanted \\ text test</p>");
Elements els = testDocument.select("p:containsOwn(wanted \\)");
Elements els2 = testDocument.select("p:contains(wanted \\)");

当我使用p:contains(wanted) 时,会返回 p 标签,但是当我将斜杠添加到末尾时,则不会返回任何内容。

【问题讨论】:

    标签: java jsoup


    【解决方案1】:

    实际上这里是在 Java 代码中定义 testDocument

    Document testDocument = Jsoup.parse("<p>wanted \\ text test</p>");//if you print this, <p>wanted \\ text test</p>
    

    所以您使用的第一个反斜杠用于转义,另一个是该字符串&lt;p&gt;wanted \ text test&lt;/p&gt; 中的实际反斜杠。

    但是,如果您从文件中重新读取此&lt;p&gt;wanted \\ text test&lt;/p&gt;,那么 Java 会假定它们是普通字符,因为特殊字符已被转换。

    所以这里当你尝试查找 testDocument.select("p:contains(wanted \)") 时,实际上不会显示任何文本。

    因此最好将反斜杠替换为其他字符并获取文本:

            Document testDocument = Jsoup.parse("<p>wanted \\ text test</p>".replace("\\", "/"));
            Elements els = testDocument.select("p:containsOwn(wanted \\)");
            String x = "wanted /";
            Elements els2 = testDocument.select("p:contains("+x+")");
    
            System.out.println(els);
            System.out.println(els2);
    

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2017-03-27
      • 2021-11-02
      • 2021-03-27
      • 1970-01-01
      • 2017-09-20
      • 1970-01-01
      相关资源
      最近更新 更多