Java 如何在不创建JSOUP文档的情况下处理图像标记

Java 如何在不创建JSOUP文档的情况下处理图像标记,java,html,jsoup,Java,Html,Jsoup,我有一个图像标签作为字符串。我需要解析标记,并为标记添加类、高度和宽度。为此,我使用了下面的JSOUP代码 String imgTag = "<img class=\"fit-picture\" src=\"/Downloads/grapefruit-slice-332-332.jpg\" alt=\"Grapefruit slice atop a pile of other slices\">"; Document doc = Jsoup.parse(imgTag); Elemen

我有一个图像标签作为字符串。我需要解析标记,并为标记添加类、高度和宽度。为此,我使用了下面的JSOUP代码

String imgTag = "<img class=\"fit-picture\" src=\"/Downloads/grapefruit-slice-332-332.jpg\" alt=\"Grapefruit slice atop a pile of other slices\">";
Document doc = Jsoup.parse(imgTag);
Elements img = doc.select("img");
for (Element image:img) {
image.addClass("abc");
String styleStr = image.attr("style");
                    boolean setSize = true;
                    if(styleStr != null && !styleStr.isEmpty() && (styleStr.contains("width") || styleStr.contains("height"))){
                        setSize = false;
                    }
                    if(setSize) {
                    String w = image.attr("width");
                    String h = image.attr("height");

                    if(w == null || w.isEmpty()) {
                        image.attr("width",width+"");
                    }
                    if(h == null || h.isEmpty() ) {
                        image.attr("height",height+"");
                    }
                    }
}
String imgrep = doc.body().html();
字符串imgTag=”“;
Document doc=Jsoup.parse(imgTag);
元素img=文件选择(“img”);
用于(元素图像:img){
image.addClass(“abc”);
字符串styleStr=image.attr(“style”);
布尔设置大小=真;
如果(styleStr!=null&&!styleStr.isEmpty()&&(styleStr.contains(“宽度”)| | styleStr.contains(“高度”)){
setSize=false;
}
如果(设置大小){
字符串w=image.attr(“宽度”);
字符串h=image.attr(“高度”);
如果(w==null | | w.isEmpty()){
image.attr(“宽度”,宽度+”);
}
if(h==null | | h.isEmpty()){
image.attr(“高度”,高度+”);
}
}
}
字符串imgrep=doc.body().html();
输出:

<img class="fit-picture abc" src="/Downloads/grapefruit-slice-332-332.jpg" alt="Grapefruit slice atop a pile of other slices" width="332" height="332">

在上面的代码中,是否可以在不创建JSOUP文档的情况下实现输出?与独立标记或元素对象类似,以实现相同的功能


提前感谢。

如果需要将这些属性作为字符串添加,则不需要JSOUP

你按下面的方法做

字符串imgTag=”“;

据我所知,你不能。您可以使用。它还返回一个
文档
,但返回一个空shell,并确保已解析的标记位于主体中

您也可以像这样跳过文档创建:

final List nodes=Parser.parseFragment(imgTag,null,”);
但结果仍然是一个包含以下HTML的节点列表:



我必须解析许多图像标记。在这种情况下,有些标记已经有类名,而有些则没有。另外,我会检查是否有任何带有宽度和高度的样式属性,在这种情况下,我不会添加宽度和高度属性。您问题中的代码将img声明为字符串,这就是我建议此答案的原因。如果您已经有了这些标记(即代码中没有您构造的标记),那么您必须以某种方式对其进行解析。JSOUP是其中一种方法。在JSOUP中,是否有任何方法可以创建独立的标记或元素来实现输出