Удаление только тега HTML и оставление текста внутри тега с помощью Jsoup - PullRequest
0 голосов
/ 06 июля 2018

Просто хотите удалить только внутренний тег «span» и не хотите удалять текст внутри него

<blockquote>
      <span>I don’t even bring up technology.</span> 
          I talk about the flow of data.&rdquo;
      <cite>&ndash;Rick Hassman, CIO, Pella</cite>
</blockquote>

После разбора это должно выглядеть как

    <blockquote>
            I don’t even bring up technology.
              I talk about the flow of data.&rdquo;
          <cite>&ndash;Rick Hassman, CIO, Pella</cite>
    </blockquote>

Пожалуйста, помогите ..

Ответы [ 3 ]

0 голосов
/ 06 июля 2018

Самый простой способ решить эту проблему - использовать метод String.replace ().

String newHtml = html.replaceAll( "<\\/?\\s*span.*?>", "");

Если вы предпочитаете использовать Jsoup, тогда все становится сложнее:

        Document doc = Jsoup.parse(html);
        for (Element e : doc.select("span")) {

            Element parent = e.parent();
            Element newParent = parent.clone();
            newParent.empty();
            for (Node n : parent.childNodes()) {

                if (n instanceof Element && ((Element) n).tag().getName().equals("span")) {
                    newParent.append(((Element) n).html());
                } else {
                    newParent.append(n.outerHtml());
                }

            }
            parent.replaceWith(newParent);

        }
0 голосов
/ 06 июля 2018

Используйте StringUtils # substringBetween из Apache Commons Lang , это может сэкономить вам много усилий.

String spanText = StringUtils.substringBetween(source, "<span>", "</span>");
String result = source.replaceAll("<span>.+</span>", spanText);
0 голосов
/ 06 июля 2018

Если ваш тег верен и вы спрашиваете, как это сделать с помощью Java ...

String hi = "Hello World!"
String no_o = hi.replaceAll("o", "");

... должно помочь.

...