从 HTML 片段中删除空标签对

发布于 2024-12-24 17:00:33 字数 390 浏览 0 评论 0原文

我有一个用户提交的字符串,其中包含 HTML 内容,例如

"<p></p><div></div><p>Hello<br/>world</p><p></p>"

我想转换该字符串,以便删除空标记对(但保留像
这样的空标记)。例如,此转换的结果应将上面的字符串转换为

"<p>Hello<br/>world</p>"

我想使用 JSoup 来执行此操作,因为我的类路径中已经有此转换,并且对我来说最简单的方法是在服务器端。

I have a user-submitted string that contains HTML content such as

"<p></p><div></div><p>Hello<br/>world</p><p></p>"

I would like to transform this string such that empty tag pairs are removed (but empty tags like <br/> are retained). For example, the result of this transformation should convert the string above to

"<p>Hello<br/>world</p>"

I'd like to use JSoup to do this, as I already have this on my classpath, and it would be easiest for me to perform this transformation on the server-side.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

过潦 2024-12-31 17:00:33

下面是一个执行此操作的示例(使用 JSoup):

String html = "<p></p><div></div><p>Hello<br/>world</p><p></p>";
Document doc = Jsoup.parse(html);

for (Element element : doc.select("*")) {
    if (!element.hasText() && element.isBlock()) {
        element.remove();
    }
}

System.out.println(doc.body().html())

上面代码的输出就是您要查找的内容:

<p>Hello<br />world</p>

Here is an example that does just that (using JSoup):

String html = "<p></p><div></div><p>Hello<br/>world</p><p></p>";
Document doc = Jsoup.parse(html);

for (Element element : doc.select("*")) {
    if (!element.hasText() && element.isBlock()) {
        element.remove();
    }
}

System.out.println(doc.body().html())

The output of the code above is what you are looking for:

<p>Hello<br />world</p>
メ斷腸人バ 2024-12-31 17:00:33

不太熟悉 jsoup,但您可以通过简单的正则表达式替换来做到这一点:

String html = "<p></p><div></div><p>Hello<br/>world</p><p></p>";
html = html.replaceAll("<([^>]*)></\\1>", "");

尽管使用完整的解析器,您可能在处理过程中删除空内容,具体取决于您最终要使用它做什么。

Not really familiar with jsoup, but you could do this with a simple regex replace:

String html = "<p></p><div></div><p>Hello<br/>world</p><p></p>";
html = html.replaceAll("<([^>]*)></\\1>", "");

Although with a full parser you could probably just drop empty content during processing, depending on what you're eventually going to do with it.

我们的影子 2024-12-31 17:00:33

Jsoup 将从用户输入的 HTML 生成正确的 XML。使用 XML 解析器查找并删除所有空标签。我认为这比正则表达式更好。看这里:Java 删除空 XML 标签
您还可以使用 JSoup 为您查找空标签。看这里:http://jsoup.org/cookbook/extracting-data/selector-syntax
并使用 Node.remove() 方法。

Jsoup will make correct XML from user-input HTML. Use XML parser to find and remove all empty tags. I think it's a better idea than regexp. Look here: Java Remove empty XML tags
You can also use JSoup to find empty tags for you. Look here : http://jsoup.org/cookbook/extracting-data/selector-syntax
and use Node.remove() method.

吾家有女初长成 2024-12-31 17:00:33

如果你使用jquery,你可以像

var tags = "<p></p><div></div><p>Hello<br/>world</p><p></p>";

$("<div id='mydiv'>"+tags+"</div>").appendTo($('body'));
$('#mydiv').children().each(function(){
    var elem = $(this);
    if(elem.html() === "") elem.remove();
});

小提琴一样: http://jsfiddle.net/LqCx5/2/< /a>

if you are using jquery, you can do it like

var tags = "<p></p><div></div><p>Hello<br/>world</p><p></p>";

$("<div id='mydiv'>"+tags+"</div>").appendTo($('body'));
$('#mydiv').children().each(function(){
    var elem = $(this);
    if(elem.html() === "") elem.remove();
});

fiddle : http://jsfiddle.net/LqCx5/2/

凉墨 2024-12-31 17:00:33

不知道 Jsoup,下面的代码也适用于简单的 javascript 正则表达式。
尝试下面的代码。

function removeall(){
var tagarray=new Array("<p>","<div>");
source="<p></p><div></div><p>Hello<br/>world</p><p></p>";
for ( var int = 0; int < tagarray.length; int++) {
tag2=tagarray[int].replace("<","</");
var tagpair=new RegExp(tagarray[int]+tag2,"g");
source=source.replace(tagpair,"");
    }
alert(source);

}

dont know the Jsoup,below code also works with simple javascript regex.
try the below code.

function removeall(){
var tagarray=new Array("<p>","<div>");
source="<p></p><div></div><p>Hello<br/>world</p><p></p>";
for ( var int = 0; int < tagarray.length; int++) {
tag2=tagarray[int].replace("<","</");
var tagpair=new RegExp(tagarray[int]+tag2,"g");
source=source.replace(tagpair,"");
    }
alert(source);

}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文