From f6b61a485501f326debe52d77ea65d87fb34b37f Mon Sep 17 00:00:00 2001
From: 田源 <tianyuan@vci-tech.com>
Date: 星期三, 05 三月 2025 17:57:09 +0800
Subject: [PATCH] 完善集成日志查询
---
Source/BladeX-Tool/blade-starter-http/src/main/java/org/springblade/core/http/DomMapper.java | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 160 insertions(+), 0 deletions(-)
diff --git a/Source/BladeX-Tool/blade-starter-http/src/main/java/org/springblade/core/http/DomMapper.java b/Source/BladeX-Tool/blade-starter-http/src/main/java/org/springblade/core/http/DomMapper.java
new file mode 100644
index 0000000..de26866
--- /dev/null
+++ b/Source/BladeX-Tool/blade-starter-http/src/main/java/org/springblade/core/http/DomMapper.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright (c) 2018-2028, DreamLu All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+package org.springblade.core.http;
+
+import org.jsoup.helper.DataUtil;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.parser.Parser;
+import org.jsoup.select.Elements;
+import org.springblade.core.tool.utils.Exceptions;
+import org.springframework.cglib.proxy.Enhancer;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 鐖櫕 xml 杞� bean 鍩轰簬 jsoup
+ *
+ * @author L.cm
+ */
+public class DomMapper {
+
+ /**
+ * Returns body to jsoup Document.
+ *
+ * @return Document
+ */
+ public static Document asDocument(ResponseSpec response) {
+ return readDocument(response.asString());
+ }
+
+ /**
+ * 灏嗘祦璇诲彇涓� jsoup Document
+ *
+ * @param inputStream InputStream
+ * @return Document
+ */
+ public static Document readDocument(InputStream inputStream) {
+ try {
+ return DataUtil.load(inputStream, StandardCharsets.UTF_8.name(), "");
+ } catch (IOException e) {
+ throw Exceptions.unchecked(e);
+ }
+ }
+
+ /**
+ * 灏� html 瀛楃涓茶鍙栦负 jsoup Document
+ *
+ * @param html String
+ * @return Document
+ */
+ public static Document readDocument(String html) {
+ return Parser.parse(html, "");
+ }
+
+ /**
+ * 璇诲彇 xml 淇℃伅涓� java Bean
+ *
+ * @param inputStream InputStream
+ * @param clazz bean Class
+ * @param <T> 娉涘瀷
+ * @return 瀵硅薄
+ */
+ public static <T> T readValue(InputStream inputStream, final Class<T> clazz) {
+ return readValue(readDocument(inputStream), clazz);
+ }
+
+ /**
+ * 璇诲彇 xml 淇℃伅涓� java Bean
+ *
+ * @param html html String
+ * @param clazz bean Class
+ * @param <T> 娉涘瀷
+ * @return 瀵硅薄
+ */
+ public static <T> T readValue(String html, final Class<T> clazz) {
+ return readValue(readDocument(html), clazz);
+ }
+
+ /**
+ * 璇诲彇 xml 淇℃伅涓� java Bean
+ *
+ * @param doc xml element
+ * @param clazz bean Class
+ * @param <T> 娉涘瀷
+ * @return 瀵硅薄
+ */
+ @SuppressWarnings("unchecked")
+ public static <T> T readValue(final Element doc, final Class<T> clazz) {
+ Enhancer enhancer = new Enhancer();
+ enhancer.setSuperclass(clazz);
+ enhancer.setUseCache(true);
+ enhancer.setCallback(new CssQueryMethodInterceptor(clazz, doc));
+ return (T) enhancer.create();
+ }
+
+ /**
+ * 璇诲彇 xml 淇℃伅涓� java Bean
+ *
+ * @param <T> 娉涘瀷
+ * @param inputStream InputStream
+ * @param clazz bean Class
+ * @return 瀵硅薄
+ */
+ public static <T> List<T> readList(InputStream inputStream, final Class<T> clazz) {
+ return readList(readDocument(inputStream), clazz);
+ }
+
+ /**
+ * 璇诲彇 xml 淇℃伅涓� java Bean
+ *
+ * @param <T> 娉涘瀷
+ * @param html html String
+ * @param clazz bean Class
+ * @return 瀵硅薄
+ */
+ public static <T> List<T> readList(String html, final Class<T> clazz) {
+ return readList(readDocument(html), clazz);
+ }
+
+ /**
+ * 璇诲彇 xml 淇℃伅涓� java Bean
+ *
+ * @param doc xml element
+ * @param clazz bean Class
+ * @param <T> 娉涘瀷
+ * @return 瀵硅薄鍒楄〃
+ */
+ public static <T> List<T> readList(Element doc, Class<T> clazz) {
+ CssQuery annotation = clazz.getAnnotation(CssQuery.class);
+ if (annotation == null) {
+ throw new IllegalArgumentException("DomMapper readList " + clazz + " mast has annotation @CssQuery.");
+ }
+ String cssQueryValue = annotation.value();
+ Elements elements = doc.select(cssQueryValue);
+ List<T> valueList = new ArrayList<>();
+ for (Element element : elements) {
+ valueList.add(readValue(element, clazz));
+ }
+ return valueList;
+ }
+
+}
--
Gitblit v1.9.3