Java--------------------XML

Java解析 XML 及生成XML 1、文档对象模型(Document Object Model,DOM) (tree parser)将读入的XML文档转换为树结构。2、简单API(Simple API for XML SAX) (Stream parser)将读入的XML文档转换为相应的事件。startDocument和endDocument 分别在文档开始和结束时各调用一次。两种解析器比较:如果文档很长,生成树很耗内存,如果不关心上下文,只关心元素,可以使用流。//三种方式获取Document。4、所有属性必须有值,不能为空。 阅读详情

目录

一,xml简介

 文档结构:

 特殊字符:

二,解析xml 

 DOM解析

 org.w3c.dom包中的常用接口

 DOM读取XML的步骤

使用DOM保存XML文档 

  DOM4j解析


 

一,xml简介

XML(EXtensible Markup Language):可扩展标记语言XML 是一种很像HTML的标记语言。

XML 的设计宗旨是传输数据,而不是显示数据。

XML 标签没有被预定义。您需要自行定义标签。

XML 是 W3C 的推荐标准。

XML 和 HTML 之间的差异

XML 和 HTML 为不同的目的而设计:XML 被设计用来传输和存储数据,其焦点是数据的内容。

HTML 被设计用来显示数据,其焦点是数据的外观。

 文档结构:

 每个XML文档有且只有一个根元素。

根元素的特点如下:

根元素是一个完全包括文档中其他所有元素的元素。

根元素的开始标签要放在所有其他元素的开始标签之前。

根元素的结束标签要放在所有其他元素的结束标签之后

 特殊字符:

<?xml version="1.0" encoding="utf-8" ?>
<members>
    <member>
        <name>王者荣耀</name>
        <vip>vip1000</vip>
        <passward>000000</passward>
        <jifen>1000</jifen>
    </member>

    <member>
        <name>王者荣耀</name>
        <vip>vip1000</vip>
        <passward>000000</passward>
        <jifen>1000</jifen>
    </member>
</members>

二,解析xml 

 DOM解析

 

 org.w3c.dom包中的常用接口

Document接口:Document对象代表整个XML文档,它也是对XML文档进行操作的

点Document接口继承自Node接口

常用方法:

NodeList接口:包含了一个或者多个节点的列表。 

 Element接口:代表XML文档中的标签元素。

Element接口继承自Node,也是Node最主要的子对象。在标签中可以包含属性。

 DOM读取XML的步骤

 1.创建解析器工厂对象(DocumentBuilderFactory)。

2.由解析器工厂对象创建解析器对象(DocumentBuilder)。

3.由解析器对象对指定XML文件进行解析,构建相应DOM树,创建Document对象。

4.以Document对象为起点对DOM树的节点进行增删改查操作使用

使用DOM保存XML文档 

1.创建转换器工厂对象(TransformerFactory)。

2.由转换器工厂对象创建转换器对象(Transformer)。

3.创建DOMSource对象(DOMSource)。

4.由转换器对象设置输出格式(setOutputProperty方法)。

5.创建StreamResult对象(包含保存文件的信息)。

6.将XML保存到指定文件中(transform方法)。

 例:

<?xml version="1.0" encoding="utf-8" ?>
<members>
    <member>
        <name>王者荣耀</name>
        <vip>vip1000</vip>
        <passward>000000</passward>
        <jifen>1000</jifen>
    </member>

    <member>
        <name>王者荣耀</name>
        <vip>vip1000</vip>
        <passward>000000</passward>
        <jifen>1000</jifen>
    </member>
</members>
package com.bdqn.lianxi.xml;

import lombok.Data;

@Data
public class Book {
    private int id;

    private String author;

    private String titile;

    private String description;

}
package com.bdqn.lianxi.xml;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.SAXException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.File;
import java.io.IOException;


public class DomUtil {

    public static Document createDocument(String path){
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = null;
        Document document = null;
        try {
            builder = factory.newDocumentBuilder();
            File file = new File(path);
            document = builder.parse(file);
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
            System.err.println("文件不存在");
        } catch (SAXException e) {
            e.printStackTrace();
        }
        return document;
    }


    public static void saveXml(Node node, String path){
        TransformerFactory factory = TransformerFactory.newInstance();
        Transformer transformer = null;
        try {
            transformer = factory.newTransformer();
        } catch (TransformerConfigurationException e) {
            e.printStackTrace();
        }
        DOMSource domSource = new DOMSource(node);
        StreamResult streamResult = new StreamResult(path);
        try {
            transformer.transform(domSource,streamResult);
        } catch (TransformerException e) {
            e.printStackTrace();
        }
    }
}
package com.bdqn.lianxi.xml;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import java.util.ArrayList;
import java.util.List;


public class BookDao {
    private List<Book> bookList = new ArrayList<>();

    private static final String PATH = "day01\\zsgc.xml";

    public void load(){
        Document document = DomUtil.createDocument(PATH);
        NodeList nodeList = document.getElementsByTagName("book");
        Book book = null;
        for(int i=0;i<nodeList.getLength();i++){
            book = new Book();
            Node node = nodeList.item(i);
            Element element = (Element)node;
            int id = Integer.parseInt(element.getAttribute("id"));
            book.setId(id);
            NodeList childNodeList = node.getChildNodes();
            for(int j = 0;j<childNodeList.getLength();j++){
                Node childNode = childNodeList.item(j);
                String nodeName = childNode.getNodeName();
                if("author".equals(nodeName)){
                    book.setAuthor(childNode.getTextContent());
                }else if("title".equals(nodeName)){
                    book.setTitile(childNode.getTextContent());
                }else if("description".equals(nodeName)){
                    book.setDescription(childNode.getTextContent());
                }
            }
            bookList.add(book);
        }
    }

    public void print(){
        if(bookList!=null && !bookList.isEmpty()){
            System.out.println("序号\t\t书名\t\t作者\t\t简介");
            bookList.forEach(book -> {
                System.out.println(book.getId()+"\t\t"+book.getTitile()+
                        "\t\t"+book.getAuthor()+"\t\t"+book.getDescription());
            });
        }
    }


    public void add(Book book){
        Document document = DomUtil.createDocument(PATH);
        Element element = document.createElement("book");
        element.setAttribute("id",String.valueOf(book.getId()));

        Element author = document.createElement("author");
        author.setTextContent(book.getAuthor());
        Element title = document.createElement("title");
        title.setTextContent(book.getTitile());
        Element description = document.createElement("description");
        description.setTextContent(book.getDescription());

        element.appendChild(author);
        element.appendChild(title);
        element.appendChild(description);

        Element root = document.getDocumentElement();
        root.appendChild(element);

        DomUtil.saveXml(root,PATH);
    }

    public void modify(){
        Document document = DomUtil.createDocument(PATH);
        NodeList nodeList = document.getElementsByTagName("book");
        Book book = null;
        for(int i=0;i<nodeList.getLength();i++){
            Node node = nodeList.item(i);
            Element element = (Element)node;
            int id = Integer.parseInt(element.getAttribute("id"));
            if(id==101){
                NodeList childNodeList = node.getChildNodes();
                for(int j = 0;j<childNodeList.getLength();j++){
                    Node childNode = childNodeList.item(j);
                    String nodeName = childNode.getNodeName();
                    if("author".equals(nodeName)){
                        childNode.setTextContent("李刚");
                    }
                }
            }
        }
        DomUtil.saveXml(document.getDocumentElement(),PATH);
    }


    public void delete(){
        Document document = DomUtil.createDocument(PATH);
        NodeList nodeList = document.getElementsByTagName("book");
        Book book = null;
        for(int i=0;i<nodeList.getLength();i++){
            Node node = nodeList.item(i);
            Element element = (Element)node;
            int id = Integer.parseInt(element.getAttribute("id"));
            if(id == 103){
                document.getDocumentElement().removeChild(element);
            }
        }
        DomUtil.saveXml(document.getDocumentElement(),PATH);
    }
}

 

package com.bdqn.lianxi.xml;


public class TestBook {
    public static void main(String[] args) {
        BookDao bookDao = new BookDao();
        bookDao.delete();
        bookDao.load();
        bookDao.print();

       /* Book book = new Book();
        book.setId(103);
        book.setAuthor("路遥");
        book.setTitile("平凡的世界");
        book.setDescription("讲述孙少平和孙少安的故事");
        bookDao.add(book);*/

        //bookDao.modify();


    }
}

  DOM4j解析

需要一个导入一个jar包

@Data
public class Book {
    private String id;

    private String author;

    private String titile;

    private String description;

}
public class BookDao {

    private List<Book> bookList = new ArrayList<>();

    public void showInfo(){
        Document document = DomUtil.createDocument();
        Element books = document.getRootElement();
        Iterator rootIte = books.elementIterator();
        Book book = null;
        while (rootIte.hasNext()){
            book = new Book();
            Element bookEle = (Element) rootIte.next();
            book.setId(bookEle.attributeValue("id"));
            Iterator childIte = bookEle.elementIterator();
            while (childIte.hasNext()){
                Element childEle = (Element) childIte.next();
                String eleName = childEle.getName();
                switch (eleName){
                    case "author":
                        book.setAuthor(childEle.getText());
                        break;
                    case "title":
                        book.setTitile(childEle.getText());
                        break;
                    case "description":
                        book.setDescription(childEle.getText());
                        break;
                }
            }
            bookList.add(book);
        }
    }

    public void print(){
        showInfo();
        if(bookList!=null && !bookList.isEmpty()){
            bookList.forEach(book -> {
                System.out.println(book);
            });
        }
    }

    public void add(){
        Document document = DomUtil.createDocument();

        Element books = document.getRootElement();

        Element book = books.addElement("book");
        book.addAttribute("id","103");

        Element author = book.addElement("author");
        author.setText("刘慈欣");
        Element title = book.addElement("title");
        title.setText("三体");
        Element description = book.addElement("description");
        description.setText("消灭人类暴政,世界属于三体");


        try {
            DomUtil.save(document,"books-bak.xml");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }



    public void update(){
        Document document = DomUtil.createDocument();
        Element books = document.getRootElement();
        Iterator rootIte = books.elementIterator();
        while (rootIte.hasNext()){
            Element bookEle = (Element) rootIte.next();
            Iterator childIte = bookEle.elementIterator();
            String id = bookEle.attributeValue("id");
            if("101".equals(id)){
                while (childIte.hasNext()){
                    Element childEle = (Element) childIte.next();
                    String eleName = childEle.getName();
                    if("author".equals(eleName)){
                        childEle.setText("老张");
                    }
                }
            }
        }

        try {
            DomUtil.save(document,"books-update.xml");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    public void delete(){
        Document document = DomUtil.createDocument();
        Element books = document.getRootElement();
        Iterator rootIte = books.elementIterator();
        while (rootIte.hasNext()){
            Element bookEle = (Element) rootIte.next();
            String id = bookEle.attributeValue("id");
            if("102".equals(id)){
                bookEle.getParent().remove(bookEle);
            }
        }

        try {
            DomUtil.save(document,"books-delete.xml");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

public class DomUtil {

    public static Document createDocument(){
        SAXReader saxReader = new SAXReader();
        Document document = null;
        try {
            document = saxReader.read(new File("books.xml"));
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        return document;
    }

    public static void save(Document document,String path) throws IOException {
        OutputFormat outputFormat = OutputFormat.createPrettyPrint();
        outputFormat.setEncoding("UTF-8");
        XMLWriter xmlWriter = new XMLWriter(new FileWriter(path),outputFormat);
        xmlWriter.write(document);
        xmlWriter.close();
    }
}
public class TestBook {
    public static void main(String[] args) {

        BookDao bookDao = new BookDao();
        //bookDao.showInfo();
        //bookDao.print();
        //bookDao.add();
        //bookDao.update();
        bookDao.delete();
    }
}

 

 

 

 

离心泵级间导叶的设计计算 离心泵级间导叶的设计计算高速离心泵级间流道的作用是将第一级复合叶轮流出的高速液流收集起来并送入第二级复合叶轮。级间流道的设计应考虑降低液体的流速,实现动能向压力能转化,减小液体的水力损失。级间流道主要有蜗壳形流道和导叶两种结构形... 阅读详情

相关推荐

学习笔记--在线强化学习、离线强化学习、连续强化学习的区别(4)

在连续强化学习中,状态和动作都是连续的,这意味着智能体可以采取无限数量的动作,并且状态空间是连续的,而不是离散的点。- 策略评估和模型选择:在离线学习中,如何有效地评估不同策略和模型的性能,是一个重要的研究问题。- 连续学习和迁移学习:在线学习中,学习者需要不断在不同任务和环境中学习,研究者致力于研究如何将之前学到的知识迁移到新任务中,以实现更高效的学习和决策。- 连续动作选择和优化:在连续动作空间中,智能体对动作的选择是无限的,研究者在连续强化学习中通常关注如何有效地选择连续动作,以达到最优决策策略。

hzlalb的博客 3601

java中使用DOM解析xml文件

java中使用DOM解析xml文件

chao的博客 3035

芯片详解——AD7606

AD7606详解

weixin_45661757的博客 5021

Java中 xml 转成 List 集合

将Xml部分内容转为List<实体类>并且实体类属性不仅仅局限于String类型。 接收实体类 public class InventoryQueryReturn{ // 商品编码,string(50),必填 private String itemCode; // 未冻结库存数量,int,必填 private String quantity; // 冻结库存数量,int,必填 private String lockQuantity; @Override public

phubing 4305

「 网络安全常用术语解读 」软件成分分析SCA详解:从发展背景到技术原理再到业界常用检测工具推荐

软件成分分析(Software Composition Analysis,SCA)是一种用于识别和分析软件内部组件及其关系的技术,旨在帮助开发人员更好地了解和管理其软件的构建过程,同时可帮助安全人员揭秘软件内部结构的神秘面纱。SCA技术的发展与软件行业的快速发展密不可分,下面将介绍SCA的发展背景、技术原理以及当前主流SCA工具。

所有成功的背后,都是痛苦的坚持,所有的痛苦,都是傻瓜般的不放弃! 5630

Claude Code与Vibe Coding:2026年AI编程实战指南

AI编程助手是基于大语言模型的智能代码生成工具,通过理解编程上下文提供精准的代码补全和重构建议。其核心原理是利用深度学习技术分析代码语义,将自然语言指令转化为可执行代码。这种技术能显著提升开发效率,减少重复性编码工作,特别适用于快速原型开发和复杂问题求解。在实际应用场景中,AI编程助手可与Vibe Coding方法论结合,建立流畅的人机协作工作流。Claude Code作为先进的AI编程工具,支持多语言开发和智能错误检测,而Vibe Coding则强调自然交互和迭代优化,两者协同为开发者提供完整的AI编程解

weixin_29057695的博客 343

jaxb解析xml关于处理list的注解

在JAXB中(用于JAVA对象和xml之间的转换),经常出现各类的 @XmlElement这样的标记,  下面就来以一个例子小结下,加深学习:  import java.util.*; import javax.xml.bind.annotation.*; @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) pub

shenyunsese的专栏 2万+

uniapp自定义tabbar闪屏?3步搞定原生tabbar隐藏+自定义占位(附完整代码)

本文针对UniApp开发中自定义TabBar切换页面闪烁的痛点,提供了一套根治方案。通过隐藏原生TabBar并利用自定义组件进行视觉占位,巧妙结合原生切换的无闪烁优势与自定义设计的灵活性。文章详细解析了闪屏根源,并附上完整的page.json配置与代码实现,帮助开发者彻底解决此问题,提升小程序应用质感。

postgres8guard的博客 1530

java高级——使用DOM4J解析xml

首先我们要导入一个DOM4J的jar包,可以在DOM4J的官网中下载。导入DOM4J的jar包后,可以创建一个SAXReaderL对象,SAXReader saxReader=new SAXReader();然后通过这个对象使用read()方法读取到xml文件,读取到之后通过read.getRootElement();这里是获取到xml文件中数据的方法,我们还可以通过一下代码操作对xml文件进行增加、删除或者修改。

m0_72960906的博客 1395

AD5940阻抗测量开发板实战:从源码获取到工程调试全解析

本文详细解析了AD5940阻抗测量开发板的实战应用,从源码获取到工程调试的全过程。AD5940作为ADI公司的高精度阻抗测量前端芯片,适用于生物阻抗分析、电化学传感器等领域。文章提供了开发环境搭建、工程配置、常见问题排查及进阶调试技巧,帮助开发者快速掌握AD5940开发板的使用方法。

weixin_30919429的博客 213

【YOLOv11】006、YOLOv11数据增强策略:Mosaic、MixUp等增强技术原理解析

摘要:YOLOv11在产线缺陷检测中遇到小尺寸瑕疵漏检问题,暴露了训练数据过于"干净"的缺陷。数据增强的核心是提升模型泛化能力,而非简单扩充数据。Mosaic增强通过多图拼接迫使模型处理多尺度目标,需注意边界框裁剪细节;MixUp通过线性插值使决策边界更平滑,但需避免类别冲突。自适应增强策略应随训练进度动态调整强度。实际应用中,需针对小目标、类别不平衡等场景调整增强参数,并确保验证与推理流程一致。数据增强应针对性解决具体问题,而非盲目尝试组合。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 366

xml转化成list集合

public static List&lt;Map&lt;String, String&gt;&gt; xml2list(String xml,String node) { xml =xml.replace("\n","").replace(" ",""); List&lt;Map&lt;String, String&gt;&gt; resList = n

IT_Joy2017的博客 1万+

【Agent从入门到实践】01 从“工具函数”到“智能体”:Agent与传统程序的核心区别

传统程序是“你教它怎么做,它才做什么”,Agent是“你告诉它做什么,它自己想怎么做”。从技术层面来说,这个区别的背后,是Agent融合了大语言模型(LLM)、记忆能力、工具调用能力、决策能力等技术,才实现了“自主思考”和“灵活执行”,而这些技术,咱们会在后面的章节中一步步拆解,手把手教大家实现。

人工智能AI技术 988

Java中XML运用总结

XML 简介: 可扩展标记语言(eXtensible Markup Language)。 特性: 1. xml具有平台无关性, 是一门独立的标记语言. 2. xml具有自我描述性 为什么学习XML? 1. 网络数据传输. 2. 数据存储 3. 配置文件 XML文件 .XML文件是保存XML数据的一种方式 XML数据也可以以其他的方式存在(如在内存中构建XML数据)。 不要将XML语言狭隘的理解成XML文件。 XML语法格式 1. XML文档声明 <?xml versio..

weixin_44722237的博客 2559

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

读取xml java,Java读取xml数据

xml中的代码书名1100书名2300java中的代码import java.io.File;import java.io.IOException;import javax.lang.model.element.Element;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFacto...

weixin_28865923的博客 1168

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

如何将XML转换为Java对象

1.首先创建citylist.xml文件,放在resource目录下,文件内容如下: <?xml version="1.0" encoding="UTF-8"?> <c c1="0"> <d d1="101280101" d2="广州" d3="guangzhou" d4="广东"/> <d d1="101280102" d2="番禺" d3="p...

wunianisme的博客 4968

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java校验xml_Java通过XML Schema校验XML

Java通过XML Schema校验XMLJava通过XML Schema校验XMLXML的校验在XML处理中非常常见,如果没有有效的办法来校验XML的合法性,往往会导致很多问题。XML的校验是通过XML Schema(XSD) 或DTD文件的语法规范来校验的。DTD现在越来越不受欢迎了,在此选用XSD来校验。Java校验XML是件和扯淡的事情,因为Sun的XML相关软件包会令你云里雾里。W3C这...

weixin_39643679的博客 364

java xml解析器_Java XML解析器

java xml解析器Java XML parser is used to work with xml data. XML is widely used technology to transport or store data. That’s why there are many java xml parsers available. Java XML解析器用于处理xml数据。 XML是广泛用于...

从零开始的教程世界 1110

JAVA对XML的读写

java对xml的读写 XML: 文件的类型声明: <?xml version="1.0" encoding="UTF-8"?> xml的作用: 传输数据的格式 存储数据 做配置文件使用的 xml内容: 只有一个根节点 标签" 实体 >&gt <&lt 空格==&nbsp; <CDATA[]>内容原样输出,不会做转仪;里面什么内容就什么内容,比如特殊符号。用于注释 xml的读取: 使用的dom4j.jar包 操作步

qq_41343166的博客 2556

Java中XML文件

传输和存储数据标签必须自行定义特点:XML与操作系统、编程语言的开发平台无关。。

weixin_71219171的博客 1024

java xml jsp_Java与XML

Java与XML作者:文章来源:发布日期:2006年06月12日译作者: Britt McLaughlin 著 孙兆林 汪东 王鹏 译出版日期: 2001年4月字数: 495千字页数: 495开本: 16原价:¥69.00内容简介:一段时间以来,XML已经成为Internet开发人员之间的热门话题。但是怎样深入理解XML的所有类型,并让其工作呢?本书阐述了如何使用XML构建真实世界的应用,...

weixin_36343353的博客 210

JAVA中解析XML和书写XML

JAVA中解析XML和书写XML 一.解析XML 1.解析user.xml文档 ​ 解析user.xml文档,使用DOM4J解析XML,将User.xml文档解析后的所有员工入对象中,将对象在存储到集合中。 1.创建自定义User类 ​ 属性包括:id(序号),name(姓名),age(年龄),salay(薪资),gender(性别) public class User { private int id; private String name; private int age; private

weixin_47600732的博客 3373

Java解析XML

无

qq_64388611的博客 1346

java中XML的使用

学习使用xml

xrkhy的博客 1530

java xml路径_java读取xml路径

*内容如下: java 使用相对路径读取 xml 文件: 一、xml 文件一般的存放位置有三个: 1.放在 WEB-INF 下; 2.xml 文件放在/WEB-INF/classes 目录下或 class......JAVA读取xml文件中节点值_计算机软件及应用_IT/计算机_专业资料。pub...使用Java读写XML文档_计算机软件及应用_IT/计算机_专业资料。Java ....getCo...

weixin_35981295的博客 1430

Java与XML映射利器

Java与XML映射利器熟悉Hibernate的朋友都知道,它可以把Java类和数据库表进行映射,通过操作Java对象的方式可以对表记录进行更新。这可以大大增加我们的开发效率,免去自己直接通过JDBC操作数据库表的繁琐过程。其实Mybatis也是类似的,只不过它是半自动的,需要自己写SQL。在利用Java开发基于XML的操作时你会不会也想要一款可以直接基于Java类建立对应的XML的映射关系,然后可

Elim的博客 3587
上一篇: Java -------------------------网络编程
下一篇: HTML5基础,列表,表格,媒体元素,表单
lhjava1234
博客等级 码龄4年 4粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值