Java中,可使用“标记文本,或借助库如Jsoup
Java中,实现各种标记(Markup)通常涉及生成或解析不同格式的标记语言,如HTML、XML、JSON等,以下是如何使用Java进行各式标记的详细指南,包括常用库、基本操作以及示例代码。
使用Java生成和解析HTML标记
1 生成HTML内容
在Java中,可以通过字符串拼接或使用模板引擎来生成HTML内容,以下是一个简单的示例,展示如何生成基本的HTML页面:
public class HtmlGenerator {
public static void main(String[] args) {
String html = "<!DOCTYPE html>
" +
"<html>
" +
"<head>
" +
" <title>示例页面</title>
" +
"</head>
" +
"<body>
" +
" <h1>欢迎使用Java生成HTML</h1>
" +
" <p>这是一个段落。</p>
" +
"</body>
" +
"</html>";
System.out.println(html);
}
}
2 解析HTML内容
解析HTML可以使用Jsoup库,它是一个强大的HTML解析器,能够处理不规范的HTML。
步骤:
-
添加Jsoup依赖(如果使用Maven):
<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.15.4</version> </dependency> -
使用Jsoup解析HTML:

import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; public class HtmlParserExample { public static void main(String[] args) { String html = "<html><head><title>示例</title></head>" + "<body><h1>标题</h1><p>内容</p></body></html>"; Document doc = Jsoup.parse(html); // 获取标题 String title = doc.title(); System.out.println("标题: " + title); // 获取h1标签内容 Element h1 = doc.selectFirst("h1"); System.out.println("H1内容: " + h1.text()); } }
使用Java生成和解析XML标记
1 生成XML内容
可以使用Java的javax.xml包或第三方库如JAXB来生成XML,以下是使用DOM方式生成简单XML的示例:
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class XmlGenerator {
public static void main(String[] args) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.newDocument();
// 创建根元素
Element root = doc.createElement("books");
doc.appendChild(root);
// 添加子元素
Element book = doc.createElement("book");
book.setAttribute("id", "1");
book.setAttribute("title", "Java编程思想");
root.appendChild(book);
// 转换为字符串
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
} catch(Exception e) {
e.printStackTrace();
}
}
}
2 解析XML内容
同样可以使用DOM解析器或SAX解析器,以下是使用DOM解析XML的示例:
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.;
public class XmlParserExample {
public static void main(String[] args) {
try {
String xml = "<books><book id='1' title='Java编程思想'/></books>";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(xml)));
NodeList books = doc.getElementsByTagName("book");
for(int i=0; i<books.getLength(); i++) {
Element book = (Element) books.item(i);
String id = book.getAttribute("id");
String title = book.getAttribute("title");
System.out.println("Book ID: " + id + ", Title: " + title);
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
使用Java生成和解析JSON标记
1 生成JSON内容
可以使用Jackson或Gson库来生成和解析JSON,以下是使用Gson生成JSON的示例:
步骤:
-
添加Gson依赖(如果使用Maven):

<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version> </dependency> -
使用Gson生成JSON:
import com.google.gson.Gson; import com.google.gson.GsonBuilder; class Book { private int id; private String title; // 构造方法、getter和setter省略 public Book(int id, String title) { this.id = id; this.title = title; } // Getters and Setters public int getId() { return id; } public String getTitle() { return title; } } public class JsonGeneratorExample { public static void main(String[] args) { Book book = new Book(1, "Java编程思想"); Gson gson = new GsonBuilder().setPrettyPrinting().create(); String json = gson.toJson(book); System.out.println(json); } }
2 解析JSON内容
使用Gson解析JSON:
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
class Book {
private int id;
private String title;
// Getters and setters省略
public int getId() { return id; }
public String getTitle() { return title; }
}
public class JsonParserExample {
public static void main(String[] args) {
String json = "{"id":1,"title":"Java编程思想"}";
Gson gson = new Gson();
Book book = gson.fromJson(json, Book.class);
System.out.println("Book ID: " + book.getId() + ", Title: " + book.getTitle());
}
}
使用Java进行Markdown标记处理
1 生成Markdown内容
Markdown是一种轻量级标记语言,可以通过字符串拼接生成。
public class MarkdownGenerator {
public static void main(String[] args) {
String markdown = "# 示例标题
" +
"这是一个段落,包含加粗和斜体。
" +
"列表项1
" +
"列表项2";
System.out.println(markdown);
}
}
2 解析Markdown内容
可以使用CommonMark或其他库将Markdown转换为HTML,以下是使用CommonMark的示例:

步骤:
-
添加CommonMark依赖(如果使用Maven):
<dependency> <groupId>com.atlassian.commonmark</groupId> <artifactId>commonmark</artifactId> <version>0.21.0</version> </dependency> -
使用CommonMark解析Markdown:
import org.commonmark.node.; import org.commonmark.parser.Parser; import org.commonmark.renderer.html.HtmlRenderer; public class MarkdownParserExample { public static void main(String[] args) { String markdown = "# 示例标题 这是一个段落。"; Parser parser = Parser.builder().build(); Node document = parser.parse(markdown); HtmlRenderer renderer = HtmlRenderer.builder().build(); String html = renderer.render(document); System.out.println(html); } }
表格生成与解析示例
1 生成HTML表格
public class HtmlTableGenerator {
public static void main(String[] args) {
StringBuilder table = new StringBuilder();
table.append("<table border='1'>
");
table.append(" <tr><th>编号</th><th>名称</th></tr>
");
table.append(" <tr><td>1</td><td>苹果</td></tr>
");
table.append(" <tr><td>2</td><td>香蕉</td></tr>
");
table.append("</table>");
System.out.println(table.toString());
}
}
2 解析HTML表格(使用Jsoup)
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
public class HtmlTableParserExample {
public static void main(String[] args) {
String html = "<table border='1'><tr><th>编号</th><th>名称</th></tr>" +
"<tr><td>1</td><td>苹果</td></tr>" +
"<tr><td>2</td><td>香蕉</td></tr></table>";
Document doc = Jsoup.parse(html);
Elements rows = doc.select("table tr");
for(int i=0; i<rows.size(); i++) {
Element row = rows.get(i);
Elements cols = row.select("td, th");
for(int j=0; j<cols.size(); j++) {
System.out.print(cols.get(j).text() + "t");
}
System.out.println();
}
}
}
相关问答FAQs
Q1: Jsoup库的主要功能是什么?
A1: Jsoup是一个用于解析HTML的Java库,它能够解析不规范的HTML文档,提供类似于jQuery的API来遍历和操作HTML元素,主要功能包括:
- 从URL、文件或字符串中解析HTML内容。
- 使用CSS选择器语法查找元素。
- 修改HTML文档的内容和结构。
