您好,登录后才能下订单哦!
本篇内容介绍了“Jsoup怎么将相对路径转为绝对路径”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
如果想要通过 attr 方法获取到绝对路径,必须同时使用这两个方法。
Document org.jsoup.Jsoup.parse(String html, String baseUri); String org.jsoup.nodes.Node.attr(String attributeKey);
必须使用Jsoup 带有 baseUri 参数的重载方法,如果只是用具有第一个参数的 方法,那么通过attr取绝对路径时,获取的内容为空!这是一个坑,但是其它人的博客都没有介绍这一点。
Parameters:
html HTML to parse
baseUri The URL where the HTML was
retrieved from. Used to resolve relative URLs to absolute URLs, that
occurbefore the HTML declares a <base href> tag.
这里列出参数的注释,第一个参数是需要解析的html文档,第二个参数是这个html的url。用于将相对url解析为绝对url,即在HTML声明标记之前发生。
注意: 这里的 baseUri 并不是网站的根路径,它是指当前的html路径。即当前相对路径所在的html文档的路径,是相对路径相对的那个路径。 所以,如果填写的是当前根路径,那么最后获取的绝对路径也是有问题的。(也许是可以使用的,但是格式可能有问题。) 下面第二点,依赖于当前这个给定的 baseUri 参数。
attr 方法里面的一句话:
To get an absolute URL from an attribute that may be a relative URL, prefix the key with abs,which is a shortcut to the absUrl method.
E.g.: String url = a.attr(“abs:href”);
这句话的意思是从一个相对路径种获取一个绝对路径,使用 abs 前缀,这是absUrl方法的快捷方式。
并且给了一个示例:
String url = a.attr("abs:href");
所以,如果想要获取到绝对路径的话,需要在参数前面加上 abs:
。 这里 abs 就是 absolute 的缩写,它的意思就是绝对的。
但是,如果不去使用带有上面第一点提到的那个重载的 parse 方法的话,这种方法是取不到绝对路径的,甚至是取不到路径。我在这里踩了一个坑。
这里以一个简单的例子说明: 代码:
package ahnu.news; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; public class JsoupPathTest { public static void main(String[] args) { String html = "<html>" + "<head></head>" + "<body>" + "<a href=\"../dragon/love/you\"></a>" + "</body>" + "</html>"; System.out.println("正确的用法"); Document doc = Jsoup.parse(html, "http://example/index/loveyou/"); Element aTag = doc.getElementsByTag("a").first(); //获取 a 标签,只有一个,取第一个即可。 System.out.println(aTag); String relativePath = aTag.attr("href"); //获取相对路径 String absolutePath = aTag.attr("abs:href"); //获取绝对路径 System.out.println("相对路径:" + relativePath); System.out.println("绝对路径:" + absolutePath); System.out.println("---------------------分割线---------------------"); System.out.println("错误的用法"); doc = Jsoup.parse(html); aTag = doc.getElementsByTag("a").first(); //获取 a 标签,只有一个,取第一个即可。 System.out.println(aTag); relativePath = aTag.attr("href"); //获取相对路径 absolutePath = aTag.attr("abs:href"); //获取绝对路径 System.out.println("相对路径:" + relativePath); System.out.println("绝对路径:" + absolutePath); } }
运行结果:
注意: 1.在解析html的时候,必须添加 baseUri 参数,否则获取绝对路径时,反而什么都得不到,这是一个坑,注意防范。 2.希望其他人贴方法的时候,可以附带代码的执行结果,或者如果是转载的别人的博客,也可以运行一下代码,不然如果他错了,你也转载,那就是在传播错误了。 3.英语还是很重要的,关键时候可以帮助自己理解api的正确用法。
“Jsoup怎么将相对路径转为绝对路径”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。