From 80b6cbfc9c861469146318d0b3dd5f8b8b525b8a Mon Sep 17 00:00:00 2001 From: xiejun <xiejun@vci-tech.com> Date: 星期五, 01 十一月 2024 15:11:19 +0800 Subject: [PATCH] Revert "集成获取mdm分发通用数据格式接口集成" --- 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