当前位置: 首页 > news >正文

xml+html 概述

1.什么是xml

xml 是可扩展标记语言的缩写: Extensible Markup Language。

<root><h1> text 1</h1>
</root>

 web 应用开发,需要配置 web.xml,就是个典型的 xml文件

<web-app><servlet><servlet-name>HelloServlet</servlet-name><servlet-class>HelloServlet</servlet-class></servlet><servlet-mapping><servlet-name>HelloServlet</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping></web-app>

dao或者mapper层映射文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.xml.test.mapper.helloMapper"></mapper>

上述的 root、h1、 web-app、servlet-name....mapper 整体称为 元素

简单举例: <h1> text 1</h1> 格式为 :<元素名称> 元素内容 </元素名称>

h1就是元素名称, text 1 是元素内容。整体就是一个元素。

2.什么是html

html 是 HyperText Markup Language的缩写,超文本标记语言

<html><body><p>Hello HTML</p></body>
</html>

是不是发现  类似 xml?

        html 可以简单看成是 xml 的一个子集

         html 用的都是一些预先定义的元素,如 <html>, <a>, <body>, <table> 。

         xml 什么元素都可以自定义: 如 <a> , <b>, <aabb> 。

3.XML 和 HTML 的区别:

  1. 目的

    • XML:用于存储和传输数据,强调数据的结构化
    • HTML:用于创建和显示网页内容,强调如何展示数据
  2. 自定义标签

    • XML:可以自定义标签。
    • HTML:使用预定义的标签。
  3. 语法要求

    • XML:要求严格的语法,每个开始标签必须有对应的结束标签,并且标签大小写敏感。
    • HTML:语法相对宽松,标签大小写不敏感,部分标签可以没有结束标签(例如 <li>)。
  4. 使用场景

    • XML:主要用于数据交换,如 Web 服务中的数据传输,配置文件,文档存储等。
    • HTML:用于创建网站页面,显示内容给用户。   为啥叫超文本标记语言?因为超越一般文本,其他文本记录数据,而html  记录数据同时,还能呈现出文字颜色,位置,大小等。

4.解析 xml

解析的几种方式:

1. java 本身自带对 xml 的解析。在 javax.xml 这个包下,非常难用,难用到想吐。 这种方式叫做 sax/dom
2. 因为 java 自带的很难用,所以就出现了更方便的第三方工具 dom4j, 解析效率大大提高了。 XML从入门到深入(超详细)-CSDN博客 推荐文章
3. 现在又出现了更方便的 jsoup, 我们就会讲解如何用 jsoup 来解析 xml。

前面讲过html 看作xml子集,解析方式一样的。

要求解析:<html><body><p>Hello HTML</p></body></html>

任何开发,除了jdk,jvm自带的包,都要先下载jar包

如:jsoup-1.11.2.jar

package com.test.xml.analysis.example;import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;public class Test {public static void main(String[] args) throws Exception {String html = "<html><body><p>Hello HTML</p></body></html>";
//1. 把文本解析成 Document 对象, Document 对象就代表整个 xml 文档。Document doc = Jsoup.parse(html);//2. 获取所有的 p 元素Elements as= doc.getElementsByTag("p");for (Element e : as) {
//3.打印出p元素中的元素内容System.out.println(e.text());}}
}

5.获取文档 针对4的拆分

5.1获取文档

获取Document对象的方式有多种,常见的就是基于 字符串,文件,网页地址

package com.test.xml.analysis.example;import java.io.File;
import java.net.URL;import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;public class Test {public static void main(String[] args) throws Exception {String html1 = "<html><body><p>Hello HTML</p></body></html>";Document doc = Jsoup.parse(html1);System.out.println("基于字符串方式得到的 Document:\r\n"+ doc);File f = new File("a.html");if(f.exists()) {Document fileDoc = Jsoup.parse(f,"utf-8");System.out.println("基于文件方式得到的 Document:\r\n"+ fileDoc);}String url = "http://www.baidu.com";Document urlDoc= Jsoup.parse(new URL(url),5000); //超过5秒就报错System.out.println("基于URL方式得到的 Document:\r\n"+ urlDoc);}
}

5.2 获取元素

获取元素比较常见的几种方式:  通过id, 标签或者类名称获取。

假设有文件 b.html  里面内容为:

<div class="header-container"><div class="bookwrapper  clearfix">      <div id="brandProdName"><div id="logocover"></div><div id="productName" >Documentation</div></div><br class="clearfloat" /></div></div><a href="https://blog.csdn.net/weixin_48306950/article/details/121639656">循环依赖解决</a> 
<a href="https://www.baidu.com/">百度网址 </a> <form id="searchForm" onsubmit="return search()"><input type="hidden" name="category" value="java"/><input type="hidden" name="product" value="e25407-01"/><input type="hidden" name="q" value="" id="keywordreal"/><label for="searchField"><input type="text" id="searchField" value="Search the online Java Tutorials"size="30" onclick="this.value='';" /></label><input type="submit" value="Submit" />
</form>

java对应 获取元素代码

public static void main(String[] args) throws Exception {File f = new File("b.html");if(!f.exists())return;Document doc = Jsoup.parse(f,"utf-8");//通过id获取     <div id="productName" >Documentation</div>Element e = doc.getElementById("productName");System.out.println(e);//通过标签获取  <a href="h....Elements es;es = doc.getElementsByTag("a");show(es);//通过类名称获取  <div class="header-container">es = doc.getElementsByClass("header-container");show(es);//通过属性获取     <input type="hidden" name="category" value="java"/>es = doc.getElementsByAttribute("name");show(es);}private static void show(Elements es) {for (Element e : es) {System.out.println(e);}}

5.3获取文本和内容

区分文本  内容    <a><b>123</b></a>

  • 内容 是指节点的所有数据,包括子元素。  元素a之间为内容
  • 文本 是指元素内的纯文本数据,不包括任何标签。 元素b之间为内容

c.html 如下

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<div id="d1" class="class1test  class2" ><p>Hello, world!</p>
</div></body>
</html>
public static void main(String[] args)  {  /*  File f = new File("c.html");if (!f.exists()) return;*/// 通过类加载器获取资源文件输入流InputStream ins = ResourceLoader.class.getClassLoader().getResourceAsStream("c.html");Document doc = Jsoup.parse(ins, "utf-8", "");Element e = doc.getElementById("d1");//获取属性System.out.println(e.attr("id")); //d1//获取所有属性System.out.println(e.attributes()); //  id="d1" class="class1test  class2"//获取idSystem.out.println(e.id()); //d1//获取类名称System.out.println(e.className());//  class1test  class2//获取所有类名称System.out.println(e.classNames());// [class1test, class2]//获取文本System.out.println(e.text());   //  Hello, world!//获取html/内容System.out.println(e.html());   //    <p>Hello, world!</p>//获取外html  本质就是该元素本身System.out.println(e.outerHtml());  
/*        <div id="d1" class="class1test  class2"> <p>Hello, world!</p> </div>
*///获取标签信息System.out.println(e.tagName());  // div }

注意:在 Maven 项目中,如果 c.html 文件放在 src/main/resources 目录下,那么该文件会被打包到 target/classes 目录里作为类路径资源进行访问。你不能直接使用 new File("c.html") 来访问这个文件这样在当前工作目录中查找该文件,而不是在类路径中。

回忆下之前概念。  对比上述  div标签 中 添加的内容带 p 标签 ,而不仅是只有文本 Hello

5.4 选择器

选择器语法

        在选择元素的时候,除了使用方法名如 getElementById 这样的外,还可以用 选择器语法来选择。 操作起来就像 jquery,比如getElementById 就可以写成是 select("#id")。

package com.test.xml.example;import java.io.File;import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;public class Test {static Document doc;public static void main(String[] args) throws Exception {// 通过类加载器获取资源文件输入流InputStream ins = ResourceLoader.class.getClassLoader().getResourceAsStream("b.html");doc = Jsoup.parse(ins,"utf-8","");//像 jquery 那样的选择器语法show("选择所有的超链", "a");show("根据id进行选择", "#logocover");show("根据class进行选择", ".clearfloat");show("根据属性进行选择", "[href]");show("有属性以tar开头", "[^tar]");show("根据属性值选择", "[type='application/javascript']");show("属性值以什么开头", "[href^='http://www.oracle.com']");show("属性值以什么结尾", "[href$='index.html']");show("属性值包含什么", "[href*='download']");}private static void show(String text, String selector) {show(text,selector,3);}private static void show(String text, String selector, int limit) {Elements es =doc.select(selector);if(es.size()>1)System.out.println(String.format("%s - 使用的选择器是: \"%s\" \t (最多显示 %d 条 )", text,selector,limit)); elseSystem.out.println(String.format("%s - 使用的选择器是: \"%s\"", text,selector)); int i =0;for (Element e : es) {if(i++<limit)System.out.println(e);}System.out.println();}}

b.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en-US" xmlns="http://www.w3.org/1999/xhtml" xml:lang=
"en-US">
<head>
<title>The Java™ Tutorials</title>
<meta name="Description" content=
"Tutorials and reference guides for the Java Programming Language" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<style type="text/css">
/*<![CDATA[*/body {margin-left:10px;margin-right:10px;line-height: 1.5;FONT-FAMILY: Arial, Helvetica, sans-serif; font-size: 0.8em;}a:link{text-decoration:none; color:#09569d;}a:visited{text-decoration:none; color: #3a87cf;}a:hover{text-decoration:underline; }.header-container {background-color: #fff;border-bottom: 1px solid #C1CFDA;-webkit-box-shadow: 0 2px 2px rgba(117, 163, 231, 0.1);box-shadow: 0 2px 2px rgba(117, 163, 231, 0.1);}.bookwrapper {width: auto;margin: auto;}.clearfix {}.clearfloat {clear: both;overflow: auto;height: 0px;font-size: 1px;line-height: 0px;}#brandProdName {width: auto;height: auto;}#logocover {display: block;background: transparent url(images/oracle-java-logo.png) 0px 0px no-repeat;height: 50px;width: 229px;float: left;}#productName {font-size: 16px;position: relative;top: 19px;padding-left: 3px;color: #457798;white-space: nowrap;width: 340px;}#TopBar_bl {        width: 100%;height: 60px;}#TopBar_br {width: 100%;height: 60px;}#TopBar_tl {margin-left: -110px;margin-right: -100px;    align: left;height: 60px;}#TopBar_tr {width: 100%;height: 60px;}#TopBar {min-width:700px;padding:25px 100px 10px;margin-bottom:25px;clear:both;border-bottom:1px solid #d2dde5;border-radius: 3px;background:#efefef; /* Old browsers *//* IE9 SVG, needs conditional override of 'filter' to 'none' */background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNlMmVmZjkiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);background: -moz-linear-gradient(top,  #ffffff 0%, #e2eff9 100%); /* FF3.6+ */background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#e2eff9)); /* Chrome,Safari4+ */background: -webkit-linear-gradient(top,  #ffffff 0%,#e2eff9 100%); /* Chrome10+,Safari5.1+ */background: -o-linear-gradient(top,  #ffffff 0%,#e2eff9 100%); /* Opera 11.10+ */background: -ms-linear-gradient(top,  #ffffff 0%,#e2eff9 100%); /* IE10+ */background: linear-gradient(to bottom,  #ffffff 0%,#e2eff9 100%); /* W3C */filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#e2eff9',GradientType=0 ); /* IE6-8 */}#TopBar_left {line-height: 14px;position: absolute;padding-top: 30px;padding-right: 30px;padding-left: 30px;text-align: left;font: 13px/20px Arial, Helvetica, sans-serif;font-weight: bold;font-size: 20px;color: #333;}@media print {div#TopBar_left {margin-left: 0;}}@media print {div#TopBar_right {display: none;}}#TopBar_right {line-height: 12px;float: right;padding-top: 10px;padding-right: 30px;text-align: left;}#TopBar_right a {font-size: 12px;margin: 3px;padding: 0;}#Footer {padding-top: 10px;padding-left: 10px;margin-right: 10px;       }.footertext {font-size: 10px;font-family: sans-serif; margin-top: 1px;}div#TutBody {margin: 10px 20em 10px 3em;}div.RightBar {font-family: sans-serif; float: right;}div.RightBar img {margin: 0 0 1em 0;}div.RightBox {margin: 10px 3em 10px 0;width: 15em;border-style: double;}div.BlueRightBox {margin: 10px 3em 10px 0;width: 15em;border-style: double;background:#efefef; /* Old browsers *//* IE9 SVG, needs conditional override of 'filter' to 'none' */background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNlMmVmZjkiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);background: -moz-linear-gradient(top,  #ffffff 0%, #e2eff9 100%); /* FF3.6+ */background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#e2eff9)); /* Chrome,Safari4+ */background: -webkit-linear-gradient(top,  #ffffff 0%,#e2eff9 100%); /* Chrome10+,Safari5.1+ */background: -o-linear-gradient(top,  #ffffff 0%,#e2eff9 100%); /* Opera 11.10+ */background: -ms-linear-gradient(top,  #ffffff 0%,#e2eff9 100%); /* IE10+ */background: linear-gradient(to bottom,  #ffffff 0%,#e2eff9 100%); /* W3C */filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#e2eff9',GradientType=0 ); /* IE6-8 */}div.Pad {font-size: 80%;padding: 1em;}div.Pad h2 {text-align: center;margin: 0;}div.Pad div {display: list-item;list-style-image: url(images/arrow-right-gray.gif);margin: 0.3em 1em;}ul.BlueArrows {list-style-image: url(images/ar_dbl_blue.gif);}ul.BlueArrows a:visited, ul.BlueArrows a:link {text-decoration: none;}ul.BlueArrows a:hover, ul.BlueArrows a:active {text-decoration: underline;}h1, h2, h3, h4, h5 {color: #333;font-family: sans-serif;}h1 {font-weight: bold;font-size: 20px;}h2 {font-weight: bold;font-size: 17px;}h3 {font-weight: bold;font-size: 14px;}h4 {font-size: 15px;}h5 {font-size: 12px;}/*]]>*/
</style>
<script>window.ohcglobal || document.write('<script src="https://how2j.cn/en/dcommon/js/global.js">\x3C/script>')</script><script src='/en/dcommon/js/disclaimer.js' defer></script></head>
<body>
<noscript>A browser with JavaScript enabled is required for this
page to operate properly.</noscript>
<div class="header-container"><div class="bookwrapper  clearfix">       <div id="brandProdName"><div id="logocover"></div><div id="productName" >Documentation</div></div> <br class="clearfloat" /></div>
</div><div id="TopBar"><div id="TopBar_tr"><div id="TopBar_tl"><div id="TopBar_br"><div id="TopBar_bl"> <div id="TopBar_left">The Java™ Tutorials</div><div id="TopBar_right"><script type="text/javascript">
function search() {var sform = document.getElementById("searchForm");var srchelem = document.getElementById("searchField");var srchelemreal = document.getElementById("keywordreal");var srchval = srchelem.value;if (srchval.length == 0) {return false;}srchelemreal.value = srchval;sform.action = "http://docs.oracle.com/apps/search/search.jsp";sform.method = "get";sform.target = "_blank";sform.submit();
}
</script><form id="searchForm" onsubmit="return search()"><input type="hidden" name="category" value="java"/><input type="hidden" name="product" value="e25407-01"/><input type="hidden" name="q" value="" id="keywordreal"/><label for="searchField"><input type="text" id="searchField" value="Search the online Java Tutorials"size="30" onclick="this.value='';" /></label><input type="submit" value="Submit" />
</form></div> </div></div></div></div>
</div><div class="RightBar"><img src="images/ThinkingDuke.png" width=
"124" height="128" align="middle" alt=
"Duke thinking about what to study" style="margin-top:2px" /><br />
Not sure where to start?<br />
See <a href="tutorialLearningPaths.html">Learning Paths</a>
<div class="BlueRightBox">
<center>
<h2>Tutorial Contents</h2>
</center>
<div>
<center><a href="reallybigindex.html"><img src=
"images/really_big_index_button.gif" width="108" height="22" align=
"middle" alt="really big index button" /></a></center>
</div>
</div>
<div class="RightBox">
<div class="Pad">
<h2>Tutorial Resources</h2>
<div>Last Updated <a href=
"information/history.html">7/19/2016</a></div>
<div><a href="https://blogs.oracle.com/thejavatutorials/">The Java
Tutorials' Blog</a> has news and updates about the Java SE
tutorials.</div>
<div><a href=
"http://www.oracle.com/technetwork/java/javase/java-tutorial-downloads-2005894.html">
Download the latest Java Tutorials bundle</a>.</div>
</div>
</div>
<div class="RightBox">
<div class="Pad">
<h2>In Book Form</h2>
<div><i>The Java Tutorial, Sixth Edition.</i> <a href=
"http://www.amazon.com/The-Java-Tutorial-Course-Edition/dp/0134034082"
target="_blank">Amazon.com</a>.</div>
</div>
</div>
<div class="RightBox">
<div class="Pad">
<h2>Other Resources</h2>
<div><a href="https://docs.oracle.com/javase/8/docs/">Java SE 8
Developer Guides</a></div>
<div><a href="https://docs.oracle.com/javase/8/docs/api">JDK 8 API
Documentation</a></div>
</div>
</div>
<div class="RightBox">
<div class="Pad">
<h2>Oracle Training and Professional Certification</h2>
<div><a href=
"http://education.oracle.com/pls/web_prod-plq-dad/ou_product_category.getFamilyPage?p_family_id=48">
Java Certification and Training</a></div>
<div><a href=
"http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=3">
Oracle University</a></div>
</div>
</div>
<div class="RightBox">
<div class="Pad">
<h2>Software</h2>
<div>The <a href=
"http://www.oracle.com/technetwork/java/javase/downloads/index.html">
Java Development Kit</a> (JDK)</div>
<!-- <div><a href="https://netbeans.org/">NetBeans IDE</a></div> --><!--<div><a href=
"http://www.oracle.com/technetwork/java/javaee/downloads/index.html">
Java EE SDK</a></div>--></div>
</div>
</div>
<div id="TutBody">
<p style="background-color: rgb(247, 248, 249); border-width: 1px; padding: 10px; font-style: italic; border-style: solid; border-color: rgb(64, 74, 91);">The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available.<br/>See <a href="https://www.oracle.com/technetwork/java/javase/jdk-relnotes-index-2162236.html">JDK Release Notes</a> for information about new features, enhancements, and removed or deprecated options for all JDK releases.</p>
<p>The Java Tutorials are practical guides for
programmers who want to use the Java programming language to create
applications. They include hundreds of complete, working examples,
and dozens of lessons. Groups of related lessons are organized into
"trails".</p><h2>Trails Covering the Basics</h2>
These trails are available in book form as <i>The Java Tutorial,
Sixth Edition</i>. To buy this book, refer to the box to the right.
<ul class="BlueArrows">
<li><a href="getStarted/index.html">Getting Started</a> — An
introduction to Java technology and lessons on installing Java
development software and using it to create a simple program.</li>
<li><a href="java/index.html">Learning the Java Language</a>
— Lessons describing the essential concepts and features of
the Java Programming Language.</li>
<li><a href="essential/index.html">Essential Java Classes</a>
— Lessons on exceptions, basic input/output, concurrency,
regular expressions, and the platform environment.</li>
<li><a href="collections/index.html">Collections</a> —
Lessons on using and extending the Java Collections Framework.</li>
<li><a href="datetime/index.html">Date-Time APIs</a> — How to
use the <tt>java.time</tt> pages to write date and time code.</li>
<li><a href="deployment/index.html">Deployment</a> — How to
package applications and applets using JAR files, and deploy them
using Java Web Start and Java Plug-in.</li>
<li><a href="extra/certification/index.html">Preparation for Java
Programming Language Certification</a> — List of available
training and tutorial resources.</li>
</ul>
<h2>Creating Graphical User Interfaces</h2>
<ul class="BlueArrows">
<li><a href="uiswing/index.html">Creating a GUI with Swing</a>
— A comprehensive introduction to GUI creation on the Java
platform.</li>
<li><a href="https://docs.oracle.com/javafx/index.html">Creating a
JavaFX GUI</a> — A collection of JavaFX tutorials.</li>
</ul>
<h2>Specialized Trails and Lessons</h2>
<p>These trails and lessons are only available as web pages.</p>
<ul class="BlueArrows">
<li><a href="networking/index.html">Custom Networking</a> —
An introduction to the Java platform's powerful networking
features.</li>
<li><a href="ext/index.html">The Extension Mechanism</a> —
How to make custom APIs available to all applications running on
the Java platform.</li>
<li><a href="extra/fullscreen/index.html">Full-Screen Exclusive
Mode API</a> — How to write applications that more fully
utilize the user's graphics hardware.</li>
<li><a href="extra/generics/index.html">Generics</a> — An
enhancement to the type system that supports operations on objects
of various types while providing compile-time type safety. Note
that this lesson is for advanced users. The <a href=
"java/index.html">Java Language</a> trail contains a <a href=
"java/generics/index.html">Generics</a> lesson that is suitable for
beginners.</li>
<li><a href="i18n/index.html">Internationalization</a> — An
introduction to designing software so that it can be easily adapted
(localized) to various languages and regions.</li>
<li><a href="javabeans/index.html">JavaBeans</a> — The Java
platform's component technology.</li>
<li><a href="jdbc/index.html">JDBC Database Access</a> —
Introduces an API for connectivity between the Java applications
and a wide range of databases and data sources.</li>
<li><a href="jmx/index.html">JMX</a>— Java Management
Extensions provides a standard way of managing resources such as
applications, devices, and services.</li>
<li><a href="jndi/index.html">JNDI</a>— Java Naming and
Directory Interface enables accessing the Naming and Directory
Service such as DNS and LDAP.</li>
<li><a href="jaxp/index.html">JAXP</a> — Introduces the Java
API for XML Processing (JAXP) technology.</li>
<li><a href="jaxb/index.html">JAXB</a> — Introduces the Java
architecture for XML Binding (JAXB) technology.</li>
<li><a href="rmi/index.html">RMI</a> — The Remote Method
Invocation API allows an object to invoke methods of an object
running on another Java Virtual Machine.</li>
<li><a href="reflect/index.html">Reflection</a> — An API that
represents ("reflects") the classes, interfaces, and objects in the
current Java Virtual Machine.</li>
<li><a href="security/index.html">Security</a> — Java
platform features that help protect applications from malicious
software.</li>
<li><a href="sound/index.html">Sound</a> — An API for playing
sound data from applications.</li>
<li><a href="2d/index.html">2D Graphics</a> — How to display
and print 2D graphics in applications.</li>
<li><a href="sdp/index.html">Sockets Direct Protocol</a> —
How to enable the Sockets Direct Protocol to take advantage of
InfiniBand.</li>
</ul>
</div><hr />
<div id="Footer"><p class="footertext">
<a href="http://www.oracle.com/corporate/index.html">About Oracle</a> | 
<a href="http://www.oracle.com/us/corporate/contact/index.html">Contact Us</a> |
<a href="http://www.oracle.com/us/legal/index.html">Legal Notices</a> | 
<a href="http://www.oracle.com/us/legal/terms/index.html">Terms of Use</a> |
<a href="http://www.oracle.com/us/legal/privacy/index.html">Your Privacy Rights</a></p><p class="footertext"><a href="http://www.oracle.com/pls/topic/lookup?ctx=cpyr&id=en-US">
Copyright © 1995, 2019 Oracle and/or its affiliates. All rights reserved.</a></p></div><!-- Start SiteCatalyst code -->
<script type="application/javascript" src="https://www.oracleimg.com/us/assets/metrics/ora_docs.js"></script>
<!-- End SiteCatalyst code --> 
</body>
</html>

5.5 操作属性和内容

5.5之前都是读取,那么问题来了-能修改吗?可以啊,不然网页上标签等变颜色,图片咋来的

                jsoup 除了可以解析 html/xml 外,还可以进行修改行为。

如图示例,给 P元素 增加class (类属性),并修改内容

   public static void main(String[] args) throws Exception {/*  File f = new File("c.html"); 直接读取if (!f.exists()) return;*/// 通过类加载器获取资源文件输入流   因为maven项目 放在 resources目录下,用加载器获取InputStream ins = ResourceLoader.class.getClassLoader().getResourceAsStream("d.html");Document doc = Jsoup.parse(ins, "utf-8", "");System.out.println(doc);Element e = doc.select("p").first();e.attr("class", "class1");e.appendText(" Hello JSoup");//原文本追加 文字/文本System.out.println();System.out.println(doc);}

相关文章:

xml+html 概述

1.什么是xml xml 是可扩展标记语言的缩写&#xff1a; Extensible Markup Language。 <root><h1> text 1</h1> </root> web 应用开发&#xff0c;需要配置 web.xml&#xff0c;就是个典型的 xml文件 <web-app><servlet><servlet-name&…...

C++数据结构与二叉树详解

前言&#xff1a; 在C编程的世界里&#xff0c;数据结构是构建高效程序的基石&#xff0c;而二叉树则是其中最优雅且应用广泛的数据结构之一。本文将带你深入理解二叉树的本质、实现与应用&#xff0c;助你在算法设计中游刃有余。 一、二叉树的基本概念 1. 什么是二叉树 二叉树…...

解决6栈6层码头集装箱堆栈翻箱最优解问题

‘’’ con 1 origin_stack = [ [4, 4, 1, 0, 0, 0], # 第一栈 [4, 3, 2, 1, 0, 0], # 第二栈 [4, 2, 2, 1, 0, 0], # 第三栈 [3, 3, 3, 1, 0, 0], # 第四栈 [3, 4, 2, 1, 0, 0], # 第五栈 [4, 2, 3, 2, 0, 0] # 第六栈 ] con 2 origin_stack = [ [4, 4, 3, 0, 0, 0], # 第一栈…...

Java 序列化与反序列化终极解析

Java 序列化与反序列化终极解析 1. 核心概念 (1) 什么是序列化&#xff1f; 定义&#xff1a;将对象转换为字节流的过程&#xff08;对象 → 字节&#xff09; 目的&#xff1a; 持久化存储&#xff08;如保存到文件&#xff09; 网络传输&#xff08;如RPC调用&#xff09…...

YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOv9、YOLOv10、YOLOv11、YOLOv12的网络结构图

文章目录 一、YOLOv5二、YOLOv6三、YOLOv7四、YOLOv8五、YOLOv9六、YOLOv10七、YOLOv11八、YOLOv12九、目标检测系列文章 本文将给出YOLO各版本&#xff08;YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOv9、YOLOv10、YOLOv11、YOLOv12&#xff09;网络结构图的绘制方法及图。本文所展…...

leetcode0145. 二叉树的后序遍历-easy

1 题目&#xff1a;二叉树的后序遍历 官方标定难度&#xff1a;易 给你一棵二叉树的根节点 root &#xff0c;返回其节点值的 后序遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[3,2,1] 解释&#xff1a; 示例 2&#xff1a; 输入…...

【Leetcode 每日一题】2364. 统计坏数对的数目

问题背景 给你一个下标从 0 0 0 开始的整数数组 n u m s nums nums。如果 i < j i < j i<j 且 j − i ≠ n u m s [ j ] − n u m s [ i ] j - i \ne nums[j] - nums[i] j−inums[j]−nums[i]&#xff0c;那么我们称 ( i , j ) (i, j) (i,j) 是一个 坏数对 。…...

完整的 .NET 6 分布式定时任务实现(Hangfire + Redis 分布式锁)

完整的 .NET 6 分布式定时任务实现&#xff08;Hangfire Redis 分布式锁&#xff09; 以下是完整的解决方案&#xff0c;包含所有必要组件&#xff1a; 1. 基础设施层 1.1 分布式锁服务 // IDistributedLockService.cs public interface IDistributedLockService {ValueTa…...

人脸识别联合行为检测的办公管理新模式

基于人脸识别与行为检测的办公智能化解决方案 一、背景 在传统办公场景中&#xff0c;员工考勤管理、工位使用情况统计、安全监控等环节存在诸多痛点。例如&#xff0c;传统考勤方式如指纹打卡、刷卡等存在代打卡现象&#xff0c;考勤数据不准确&#xff1b;对于员工是否在工…...

鸿蒙NEXT开发键盘工具类(ArkTs)

export declare type KeyboardCallBack (show: boolean, height: number) > void; import { AppUtil } from ./AppUtil; import { LogUtil } from ./LogUtil; import { ArrayUtil } from ./ArrayUtil;/*** 键盘工具类* author 鸿蒙布道师* since 2025/04/18*/ export class…...

Python爬虫第17节-动态渲染页面抓取之Selenium使用下篇

目录 引言 一、获取节点信息 1.1 获取属性 1.2 获取文本值 1.3 获取ID、位置、标签名、大小 二、切换Frame 三、延时等待 3.1 隐式等待 3.2 显式等待 四、前进后退 五、Cookies 六、选项卡管理 七、异常处理 引言 这一节我们继续讲解Selenium的使用下篇&#xff0…...

【数据结构】第四弹——LinkedList与链表

文章目录 一. ArrayList 的缺陷二.链表2.1 链表的概念及结构2.2 链表的结构2.2.1 单向或者双向2.2.2 带头或者不带头2.2.3 循环非循环 2.3 链表的实现1. IList接口2. MySingleList 类中具体实现(不带头单向非循环链表)1. 节点抽象成内部类手搓一个链表2. 头插法3. 尾插法4. 指定…...

设计模式从入门到精通之(五)观察者模式

观察者模式&#xff1a;实现高效事件通知的秘诀 在日常生活中&#xff0c;我们经常需要同步通知多方的信息变更。比如天气预报系统、股票价格波动提醒、社交媒体的点赞通知等。这些场景中&#xff0c;通知机制需要高效、灵活&#xff0c;而不会因为通知方的变化影响系统整体。 …...

chili3d调试笔记3 加入c++ 大模型对话方法 cmakelists精读

加入 #include <emscripten/bind.h> #include <emscripten/val.h> #include <nlohmann/json.hpp> 怎么加包 函数直接用emscripten::function&#xff0c;如&#xff1a; emscripten::function("send_to_llm", &send_to_llm); set (CMAKE_C…...

使用人工智能大模型kimi,如何免费制作PPT?

使用人工智能大模型kimi&#xff0c;如何免费制作PPT&#xff1f; 手把手操作视频https://edu.csdn.net/learn/40406/666573...

ModbusTCP 转 Profinet 主站网关

一、 功能概述 1.1 设备简介 本产品是 ModbusTCP 和 Profinet(M) 网关&#xff08;以下简称网关&#xff09;&#xff0c;使用数据映射 方式工作。 本产品在 ModbusTCP 侧作为 ModbusTCP 从站&#xff0c;接 PLC 、上位机、 wincc 屏 等&#xff1b;在 Profin…...

进阶篇|CAN FD 与性能优化

引言 1. CAN vs. CAN FD 对比 2. CAN FD 帧结构详解...

6.6 “3步调用ChatGPT打造高可靠Python调度器,零依赖实现定时任务自动化“

3步调用ChatGPT打造高可靠Python调度器,零依赖实现定时任务自动化 关键词:ChatGPT代码生成、Python调度器设计、定时任务自动化、异常处理机制、日志监控系统 需求分析与技术选型 GitHub Sentinel 需要实现两种定时任务模式: #mermaid-svg-prOScv2NNhn6w90N {font-family:…...

HarmonyOS 基础语法概述 UI范式

ArkUI框架 - UI范式 ArkTS的基本组成 装饰器&#xff1a; 用于装饰类、结构、方法以及变量&#xff0c;并赋予其特殊的含义。如上述示例中Entry、Component和State都是装饰器&#xff0c;Component表示自定义组件&#xff0c;Entry表示该自定义组件为入口组件&#xff0c;Stat…...

23种设计模式-创建型模式之建造者模式(Java版本)

Java 建造者模式&#xff08;Builder Pattern&#xff09;详解 &#x1f9f1; 什么是建造者模式&#xff1f; 建造者模式用于将一个复杂对象的构建过程与其表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 适用于创建过程复杂、构造顺序稳定但组件变化的对象。…...

【AI提示词】退休规划顾问专家

提示说明 随着人口老龄化的加剧&#xff0c;越来越多的人开始关注退休规划问题。一个专业的退休规划顾问可以帮助用户合理规划退休生活&#xff0c;确保退休后的生活质量。 提示词 # 角色 退休规划顾问专家## 注意 1. 专家设计应符合退休规划的专业性和可靠性&#xff0c;帮…...

文献总结:NIPS2023——车路协同自动驾驶感知中的时间对齐(FFNet)

FFNet 一、文献基本信息二、背景介绍三、相关研究1. 以自车为中心的3D目标检测2. 车路协同3D目标检测3. 特征流 四、FFNet网络架构1. 车路协同3D目标检测任务定义2. 特征流网络2.1 特征流生成2.2 压缩、传输与解压缩2.3 车辆传感器数据与基础设施特征流融合 3. 特征流网络训练流…...

(二十六)Java观察者模式在Android开发中的应用详解

Java观察者模式在Android开发中的应用 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;使得多个观察者对象可以同时监听一个主题对象。当主题对象的状态发生变化时&#xff0c;所有注册的观察者…...

goland做验证码识别时报“undefined: gosseract.NewClient”

gosseract 应该有 和 c 相关的配置库因此需要安装 cgo 并且启用 CGO_ENABLED 在cmd下面输入这个 go env -w CGO_ENABLED1 接着输入 go env 验证是否设置成功 解决了这个问题后 “undefined: gosseract.NewClient” 又出现了 # runtime/cgo …...

ceph weight 和 reweight 的区别

ceph osd df ID CLASS WEIGHT REWEIGHT SIZE RAW USE DATA OMAP META AVAIL %USE VAR PGS STATUS0 nvme 6.98630 0.95508 7.0 TiB 5.0 TiB 4.9 TiB 13 GiB 33 GiB 2.0 TiB 71.10 0.96 83 up1 nvme 6.98630...

# 使用 PyTorch 构建并训练一个简单的 CNN 模型进行图像分类

使用 PyTorch 构建并训练一个简单的 CNN 模型进行图像分类 在深度学习领域&#xff0c;卷积神经网络&#xff08;CNN&#xff09;是处理图像分类任务的强大工具。本文将通过一个简单的示例&#xff0c;展示如何使用 PyTorch 构建、训练和测试一个 CNN 模型&#xff0c;用于对食…...

Linux网络编程 深入解析TFTP协议:基于UDP的文件传输实战

知识点1【TFTP的概述】 学习通信的基本&#xff1a;通信协议&#xff08;具体发送上面样的报文&#xff09;、通信流程&#xff08;按照什么步骤发送&#xff09; 1、TFTP的概述 tftp&#xff1a;简单文件传输协议&#xff0c;**基于UDP&#xff0c;**不进行用户有效性验证 …...

汽车免拆诊断案例 | 2019款大众途观L车鼓风机偶尔不工作

故障现象 一辆2019款大众途观L车&#xff0c;搭载DKV发动机和0DE双离合变速器&#xff0c;累计行驶里程约为8万km。车主进厂反映&#xff0c;鼓风机偶尔不工作。 故障诊断  接车后试车&#xff0c;鼓风机各挡位均工作正常。用故障检测仪检测&#xff0c;空调控制单元&#x…...

编程常见错误归类

上一篇讲了调试&#xff0c;今天通过一个举例回忆一下上一篇内容吧&#xff01; 1. 回顾&#xff1a;调试举例 在VS2022、X86、Debug的环境下&#xff0c;编译器不做任何优化的话&#xff0c;下⾯代码执⾏的结果是啥&#xff1f; #include <stdio.h> int main() {int …...

Python 3.13 support for PyTorch

Python 3.13 support for PyTorch Python 3.13 support for PyTorch 去官网可以查到具体信息&#xff1a;https://pytorch.org/get-started/locally/ 然后选择自己的CUDA版本&#xff0c;下面会显示下载网站&#xff0c;比如我选择12.4&#xff0c;则会出现&#xff1a;pip3 …...

中国联通:《DeepSeek洞察与大模型应用:人工智能技术发展与应用实践》(可下载)

近年来&#xff0c;人工智能&#xff08;AI&#xff09;技术迅猛发展&#xff0c;尤其是大模型技术的崛起&#xff0c;正在深刻改变各行各业的运营模式和创新路径。作为中国通信行业的领军企业之一&#xff0c;中国联通积极拥抱AI技术变革&#xff0c;结合自身在通信网络、大数…...

k8s 调整Node节点 Max_Pods

默认情况下&#xff0c;Kubernetes集群中一个Node最多能起110个Pod。 这是基于性能和资源管理的考虑&#xff0c;以确保Kubernetes集群的稳定性和可靠性。 查看kht125节点上支持的最大pod数量: kubectl describe node kht125 | grep -i “Capacity|Allocatable” -A 6 调整…...

VR拍摄要点与技巧有哪些?有哪些最佳实践?

VR拍摄要点与技巧&#xff1a;最佳实践 VR技术通过模拟环境&#xff0c;使用户能够沉浸在一个完全由计算机生成的虚拟世界中&#xff0c;进行互动体验。在VR拍摄领域&#xff0c;我们主要利用这一技术来创建360度全景视频或图片&#xff0c;让观众能够全方位、无死角地感受拍摄…...

使用 Docker 安装 Elastic Stack 并重置本地密码

Elastic Stack&#xff08;也被称为 ELK Stack&#xff09;是一个非常强大的工具套件&#xff0c;用于实时搜索、分析和可视化大量数据。Elastic Stack 包括 Elasticsearch、Logstash、Kibana 等组件。本文将展示如何使用 Docker 安装 Elasticsearch 并重置本地用户密码。 ###…...

安卓手机万能遥控器APP推荐

软件介绍 安卓手机也能当“家电总控台”&#xff1f;这款小米旗下的万能遥控器APP&#xff0c;直接把遥控器做成“傻瓜式操作”——不用配对&#xff0c;不连蓝牙&#xff0c;点开就能操控电视、空调、机顶盒&#xff0c;甚至其他品牌的电器&#xff01;雷总这波操作直接封神&…...

PLOS ONE:VR 游戏扫描揭示了 ADHD 儿童独特的大脑活动

在孩子的成长过程中&#xff0c;总有那么一些“与众不同”的孩子。他们似乎总是坐不住&#xff0c;课堂上小动作不断&#xff0c;注意力难以集中&#xff0c;作业总是拖拖拉拉……这些行为常常被家长和老师简单地归结为“淘气”“不听话”。然而&#xff0c;他们可能并不只是“…...

Linux 系统编程 day4 进程管道

进程间通信&#xff08;IPC&#xff09; Linux环境下&#xff0c;进程地址空间相互独立&#xff0c;任何一个进程的全局变量在另一个进程中都看不到&#xff0c;所以进程和进程之间不能互相访问&#xff0c;要交换数据必须通过内核&#xff0c;在内核中开辟一块缓冲区&#xf…...

基于DeepSeek的考研暑假日志分析

注&#xff1a;我去年考研时写了日志&#xff0c;大致记录了我每天的主要活动。由于过于琐碎&#xff0c;一直没有翻看。突发奇想&#xff0c;现在利用deepseek总结其中规律。 从你的日志中可以总结出以下规律和活动兴衰起落&#xff1a; ​​一、学习活动规律与演变​​ ​​…...

Python 写生成 应用商店(2025版) 网页 方便收集应用 ,局域网使用

工具【1】&#xff1a;nginx 配置 nginx.conf 文件 server { listen 8080; server_name example.com; location / { root E:/BIT_Soft_2025; index index.html index.htm; } # 定义错误页面 error_page 404 /4…...

LLaMA Factory多模态微调实践:微调Qwen2-VL构建文旅大模型

LLaMA Factory 是一款开源低代码大模型微调框架&#xff0c;集成了业界最广泛使用的微调技术&#xff0c;支持通过 Web UI 界面零代码微调大模型&#xff0c;目前已经成为开源社区内最受欢迎的微调框架之一&#xff0c;GitHub 星标超过 4.7 万。本教程将基于通义千问团队开源的…...

Ubuntu20.04 部署llama-factory问题集

llama3 微调教程之 llama factory 的 安装部署与模型微调过程&#xff0c;模型量化和gguf转换。_llamafactory 部署-CSDN博客 1.跟着教程 llama-factory下载不下来 来&#xff0c;试着换源&#xff0c;多试几次&#xff0c;就可以成功了。。。 2.跟着教程&#xff0c;发现无法…...

鸿蒙语言基础

准备工作 去鸿蒙官网下载开发环境 点击右侧预浏览&#xff0c;刷新和插销按钮&#xff0c;插销表示热更新&#xff0c;常用按钮。 基础语法 string number boolean const常量 数组 let s : string "1111"; console.log("string", s);let n : number …...

每天一道C语言精选编程题之字符串拷贝

题目描述 写⼀个函数my_strcpy&#xff0c;实现拷⻉字符串的功能&#xff0c;假设给定⼀个字符数组a&#xff0c;再给定⼀个字符数组b&#xff0c;将字符串a中的内容拷⻉到字符串b中&#xff0c;拷⻉内容包含字符串末尾的 \0 字符。 解法思路 使⽤ while 循环通过指针的⽅式逐…...

C#中扩展方法和钩子机制使用

1.扩展方法&#xff1a; 扩展方法允许向现有类型 “添加” 方法&#xff0c;而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法&#xff0c;但可以像实例方法一样进行调用。 使用场景&#xff1a; 1.当无法修改某个类的源代码&#…...

基于CNN与VGG16的图像识别快速实现指南

基于CNN与VGG16的图像识别快速实现指南 以下是从零实现代码到原理剖析的完整流程&#xff0c;包含TensorFlow/Keras框架的代码示例与关键优化技巧&#xff0c;满足快速实验需求。 一、核心原理对比 特性CNN&#xff08;基础模型&#xff09;VGG16结构深度5-10层&#xff08;如…...

中间件--ClickHouse-9--MPP架构(分布式计算架构)

1、MPP 架构基础概念 MPP(Massively Parallel Processing 大规模并行处理) 是一种分布式计算架构&#xff0c;专门设计用来高效处理大规模数据集。在这种架构下*&#xff0c;数据库被分割成多个部分&#xff0c;每个部分可以在不同的服务器节点上并行处理*。这意味着&#xff…...

如何在PDF.js中改造viewer.html以实现PDF的动态加载

在PDF.js中改造viewer.html实现PDF动态加载&#xff0c;需结合参数传递、文件流处理及跨域配置等技术。以下是综合多个技术方案的核心实现步骤&#xff1a; ​一、基础参数传递法​ 1. ​URL参数动态加载​ 通过修改viewer.html的URL参数传递PDF路径&#xff0c;适用于静态文…...

Android——动画

帧动画 帧动画就是很多张图片&#xff0c;一帧一帧的播放&#xff0c;形成的一个动画效果。 frame.xml <?xml version"1.0" encoding"utf-8"?> <animation-list xmlns:android"http://schemas.android.com/apk/res/android">&l…...

基于linux 设置无线网卡Monitor模式 sniffer抓包

硬件 TP-WN722N 开源无线网卡 网卡设置成抓包模式&#xff0c;条件是什么&#xff1f; 硬件条件 网卡芯片支持监听模式&#xff0c;外置天线或高增益天线可提升抓包效果驱动与软件条件&#xff1a;正确的驱动程序系统与权限条件 Linux&#xff1a;原生支持&#xff08;Kali …...

Ubuntu18.04安装Qt5.12

本文介绍了在Ubuntu18.04环境下安装QT QT5.12相关安装包下载地址 https://download.qt.io/archive/qt/5.12/ Linux系统下Qt的离线安装包以.run结尾 (sudo apt-get install open-vm-tools open-vm-tools-desktop解决无法paste的问题) 安装 1.cd命令 终端进入对应的文件夹下面 2.…...