Java解析XML的四种方法详解

2023-11-19

XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM(Document Object Model),DTD(Document Type Definition),SAX(Simple API for XML),XSD(Xml Schema Definition),XSLT(Extensible Stylesheet Language Transformations)。


XML在不同的语言里解析方式都是一样的,只不过实现的语法不同而已。基本的解析方式有两种,一种叫SAX,另一种叫DOM。SAX是基于事件流的解析,DOM是基于XML文档树结构的解析。假设我们XML的内容和结构如下:


1 <?xml version="1.0" encoding="UTF-8"?>  
2 <employees>  
3     <employee>  
4         <name>ddviplinux</name>  
5         <sex>m</sex>  
6         <age>30</age>  
7     </employee>  
8 </employees>


本文使用JAVA语言来实现DOM与SAX的XML文档生成与解析。 首先定义一个操作XML文档的接口XmlDocument 它定义了XML文档的建立与解析的接口。


01 /**   
02  * 定义XML文档建立与解析的接口  
03  */  
04 public interface XmlDocument {    
05     /**     
06      * 建立XML文档     
07      * @param fileName 文件全路径名称     
08      */    
09     public void createXml(String fileName);    
10     /**     
11      * 解析XML文档     
12      * @param fileName 文件全路径名称     
13      */    
14     public void parserXml(String fileName); 
15 }


1、DOM生成和解析XML文档
为 XML 文档的已解析版本定义了一组接口。解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构。优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能;缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)。
001 package com.alisoft.facepay.framework.bean;
002   
003 import java.io.FileInputStream;
004 import java.io.FileNotFoundException;
005 import java.io.FileOutputStream;
006 import java.io.IOException;
007 import java.io.InputStream;
008 import java.io.PrintWriter;
009 import javax.xml.parsers.DocumentBuilder;
010 import javax.xml.parsers.DocumentBuilderFactory;
011 import javax.xml.parsers.ParserConfigurationException;
012 import javax.xml.transform.OutputKeys;
013 import javax.xml.transform.Transformer;
014 import javax.xml.transform.TransformerConfigurationException;
015 import javax.xml.transform.TransformerException;
016 import javax.xml.transform.TransformerFactory;
017 import javax.xml.transform.dom.DOMSource;
018 import javax.xml.transform.stream.StreamResult;
019 import org.w3c.dom.Document;
020 import org.w3c.dom.Element;
021 import org.w3c.dom.Node;
022 import org.w3c.dom.NodeList;
023 import org.xml.sax.SAXException;
024   
025 public class DomDemo implements XmlDocument {
026     private Document document;
027     private String fileName;
028   
029     public void init() {
030         try {
031             DocumentBuilderFactory factory = DocumentBuilderFactory
032                     .newInstance();
033             DocumentBuilder builder = factory.newDocumentBuilder();
034             this.document = builder.newDocument();
035         } catch (ParserConfigurationException e) {
036             System.out.println(e.getMessage());
037         }
038     }
039   
040     public void createXml(String fileName) {
041         Element root = this.document.createElement("employees");
042         this.document.appendChild(root);
043         Element employee = this.document.createElement("employee");
044         Element name = this.document.createElement("name");
045         name.appendChild(this.document.createTextNode("丁宏亮"));
046         employee.appendChild(name);
047         Element sex = this.document.createElement("sex");
048         sex.appendChild(this.document.createTextNode("m"));
049         employee.appendChild(sex);
050         Element age = this.document.createElement("age");
051         age.appendChild(this.document.createTextNode("30"));
052         employee.appendChild(age);
053         root.appendChild(employee);
054         TransformerFactory tf = TransformerFactory.newInstance();
055         try {
056             Transformer transformer = tf.newTransformer();
057             DOMSource source = new DOMSource(document);
058             transformer.setOutputProperty(OutputKeys.ENCODING, "gb2312");
059             transformer.setOutputProperty(OutputKeys.INDENT, "yes");
060             PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
061             StreamResult result = new StreamResult(pw);
062             transformer.transform(source, result);
063             System.out.println("生成XML文件成功!");
064         } catch (TransformerConfigurationException e) {
065             System.out.println(e.getMessage());
066         } catch (IllegalArgumentException e) {
067             System.out.println(e.getMessage());
068         } catch (FileNotFoundException e) {
069             System.out.println(e.getMessage());
070         } catch (TransformerException e) {
071             System.out.println(e.getMessage());
072         }
073     }
074   
075     public void parserXml(String fileName) {
076         try {
077             DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
078             DocumentBuilder db = dbf.newDocumentBuilder();
079             Document document = db.parse(fileName);
080             NodeList employees = document.getChildNodes();
081             for (int i = 0; i < employees.getLength(); i++) {
082                 Node employee = employees.item(i);
083                 NodeList employeeInfo = employee.getChildNodes();
084                 for (int j = 0; j < employeeInfo.getLength(); j++) {
085                     Node node = employeeInfo.item(j);
086                     NodeList employeeMeta = node.getChildNodes();
087                     for (int k = 0; k < employeeMeta.getLength(); k++) {
088                         System.out.println(employeeMeta.item(k).getNodeName()
089                                 + ":" + employeeMeta.item(k).getTextContent());
090                     }
091                 }
092             }
093             System.out.println("解析完毕");
094         } catch (FileNotFoundException e) {
095             System.out.println(e.getMessage());
096         } catch (ParserConfigurationException e) {
097             System.out.println(e.getMessage());
098         } catch (SAXException e) {
099             System.out.println(e.getMessage());
100         } catch (IOException e) {
101             System.out.println(e.getMessage());
102         }
103     }
104 }


2、SAX生成和解析XML文档
为解决DOM的问题,出现了SAX。SAX ,事件驱动。当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据。优点:不用事先调入整个文档,占用资源少;SAX解析器代码比DOM解析器代码小,适于Applet,下载。缺点:不是持久的;事件过后,若没保存数据,那么数据就丢了;无状态性;从事件中只能得到文本,但不知该文本属于哪个元素;使用场合:Applet;只需XML文档的少量内容,很少回头访问;机器内存少;
Java代码:


001 import java.io.FileInputStream;   
002 import java.io.FileNotFoundException;   
003 import java.io.IOException;   
004 import java.io.InputStream;   
005 import javax.xml.parsers.ParserConfigurationException;   
006 import javax.xml.parsers.SAXParser;   
007 import javax.xml.parsers.SAXParserFactory;   
008 import org.xml.sax.Attributes;   
009 import org.xml.sax.SAXException;   
010 import org.xml.sax.helpers.DefaultHandler;   
011    
012 public class SaxDemo implements XmlDocument {   
013     public void createXml(String fileName) {   
014         System.out.println("<<"+filename+">>");   
015     }   
016     public void parserXml(String fileName) {   
017         SAXParserFactory saxfac = SAXParserFactory.newInstance();   
018         try {   
019             SAXParser saxparser = saxfac.newSAXParser();   
020             InputStream is = new FileInputStream(fileName);   
021             saxparser.parse(is, new MySAXHandler());   
022         } catch (ParserConfigurationException e) {   
023             e.printStackTrace();   
024         } catch (SAXException e) {   
025             e.printStackTrace();   
026         } catch (FileNotFoundException e) {   
027             e.printStackTrace();   
028         } catch (IOException e) {   
029             e.printStackTrace();   
030         }   
031     }   
032 }   
033 public class MySAXHandler extends DefaultHandler {   
034     boolean hasAttribute = false;   
035     Attributes attributes = null;   
036     public void startDocument() throws SAXException {   
037         System.out.println("文档开始打印了");   
038     }   
039     public void endDocument() throws SAXException {   
040         System.out.println("文档打印结束了");   
041     }   
042     public void startElement(String uri, String localName, String qName,   Attributes attributes) throws SAXException {   
043         if (qName.equals("employees")) {   
044             return;   
045         }   
046         if (qName.equals("employee")) {   
047             System.out.println(qName);   
048         }   
049         if (attributes.getLength() > 0) {   
050             this.attributes = attributes;   
051             this.hasAttribute = true;   
052         }   
053     }   
054     public void endElement(String uri, String localName, String qName)   throws SAXException {   
055         if (hasAttribute && (attributes != null)) {   
056             for (int i = 0; i < attributes.getLength(); i++) {   
057                 System.out.println(attributes.getQName(0)   + attributes.getValue(0));   
058             }   
059         }   
060     }  
061     public void characters(char[] ch, int start, int length)   throws SAXException {   
062         System.out.println(new String(ch, start, length));   
063     }   
064 }  
065   
066 import java.io.FileInputStream; 
067 import java.io.FileNotFoundException; 
068 import java.io.IOException; 
069 import java.io.InputStream; 
070 import javax.xml.parsers.ParserConfigurationException; 
071 import javax.xml.parsers.SAXParser; 
072 import javax.xml.parsers.SAXParserFactory; 
073 import org.xml.sax.Attributes; 
074 import org.xml.sax.SAXException; 
075 import org.xml.sax.helpers.DefaultHandler; 
076   
077 public class SaxDemo implements XmlDocument { 
078     public void createXml(String fileName) { 
079         System.out.println("<<"+filename+">>"); 
080     
081     public void parserXml(String fileName) { 
082         SAXParserFactory saxfac = SAXParserFactory.newInstance(); 
083         try
084             SAXParser saxparser = saxfac.newSAXParser(); 
085             InputStream is = new FileInputStream(fileName); 
086             saxparser.parse(is, new MySAXHandler()); 
087         } catch (ParserConfigurationException e) { 
088             e.printStackTrace(); 
089         } catch (SAXException e) { 
090             e.printStackTrace(); 
091         } catch (FileNotFoundException e) { 
092             e.printStackTrace(); 
093         } catch (IOException e) { 
094             e.printStackTrace(); 
095         
096     
097
098 public class MySAXHandler extends DefaultHandler { 
099     boolean hasAttribute = false
100     Attributes attributes = null
101     public void startDocument() throws SAXException { 
102         System.out.println("文档开始打印了"); 
103     
104     public void endDocument() throws SAXException { 
105         System.out.println("文档打印结束了"); 
106     
107     public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { 
108         if (qName.equals("employees")) { 
109             return
110         
111         if (qName.equals("employee")) { 
112             System.out.println(qName); 
113         
114         if (attributes.getLength() > 0) { 
115             this.attributes = attributes; 
116             this.hasAttribute = true
117         
118     
119     public void endElement(String uri, String localName, String qName) throws SAXException { 
120         if (hasAttribute && (attributes != null)) { 
121             for (int i = 0; i < attributes.getLength(); i++) { 
122                 System.out.println(attributes.getQName(0) + attributes.getValue(0)); 
123             
124         
125     
126     public void characters(char[] ch, int start, int length) throws SAXException { 
127         System.out.println(new String(ch, start, length)); 
128     
129 }
3、DOM4J生成和解析XML文档
DOM4J 是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的 Java 软件都在使用 DOM4J 来读写 XML,特别值得一提的是连 Sun 的 JAXM 也在用 DOM4J。
Java代码:



01 import java.io.File;
02 import java.io.FileWriter;
03 import java.io.IOException;
04 import java.io.Writer;
05 import java.util.Iterator;
06 import org.dom4j.Document;
07 import org.dom4j.DocumentException;
08 import org.dom4j.DocumentHelper;
09 import org.dom4j.Element;
10 import org.dom4j.io.SAXReader;
11 import org.dom4j.io.XMLWriter;
12   
13 /** * * @author hongliang.dinghl * Dom4j 生成XML文档与解析XML文档 */
14 public class Dom4jDemo implements XmlDocument {
15     public void createXml(String fileName) {
16         Document document = DocumentHelper.createDocument();
17         Element employees = document.addElement("employees");
18         Element employee = employees.addElement("employee");
19         Element name = employee.addElement("name");
20         name.setText("ddvip");
21         Element sex = employee.addElement("sex");
22         sex.setText("m");
23         Element age = employee.addElement("age");
24         age.setText("29");
25         try {
26             Writer fileWriter = new FileWriter(fileName);
27             XMLWriter xmlWriter = new XMLWriter(fileWriter);
28             xmlWriter.write(document);
29             xmlWriter.close();
30         } catch (IOException e) {
31             System.out.println(e.getMessage());
32         }
33     }
34   
35     public void parserXml(String fileName) {
36         File inputXml = new File(fileName);
37         SAXReader saxReader = new SAXReader();
38         try {
39             Document document = saxReader.read(inputXml);
40             Element employees = document.getRootElement();
41             for (Iterator i = employees.elementIterator(); i.hasNext();) {
42                 Element employee = (Element) i.next();
43                 for (Iterator j = employee.elementIterator(); j.hasNext();) {
44                     Element node = (Element) j.next();
45                     System.out.println(node.getName() + ":" + node.getText());
46                 }
47             }
48         } catch (DocumentException e) {
49             System.out.println(e.getMessage());
50         }
51         System.out.println("dom4j parserXml");
52     }
53 }
4、JDOM生成和解析XML
为减少DOM、SAX的编码量,出现了JDOM;优点:20-80原则,极大减少了代码量。使用场合:要实现的功能简单,如解析、创建等,但在底层,JDOM还是使用SAX(最常用)、DOM、Xanan文档。
01 import java.io.FileNotFoundException;
02 import java.io.FileOutputStream;
03 import java.io.IOException;
04 import java.util.List;
05 import org.jdom.Document;
06 import org.jdom.Element;
07 import org.jdom.JDOMException;
08 import org.jdom.input.SAXBuilder;
09 import org.jdom.output.XMLOutputter;
10   
11 public class JDomDemo implements XmlDocument {
12     public void createXml(String fileName) {
13         Document document;
14         Element root;
15         root = new Element("employees");
16         document = new Document(root);
17         Element employee = new Element("employee");
18         root.addContent(employee);
19         Element name = new Element("name");
20         name.setText("ddvip");
21         employee.addContent(name);
22         Element sex = new Element("sex");
23         sex.setText("m");
24         employee.addContent(sex);
25         Element age = new Element("age");
26         age.setText("23");
27         employee.addContent(age);
28         XMLOutputter XMLOut = new XMLOutputter();
29         try {
30             XMLOut.output(document, new FileOutputStream(fileName));
31         } catch (FileNotFoundException e) {
32             e.printStackTrace();
33         } catch (IOException e) {
34             e.printStackTrace();
35         }
36     }
37   
38     public void parserXml(String fileName) {
39         SAXBuilder builder = new SAXBuilder(false);
40         try {
41             Document document = builder.build(fileName);
42             Element employees = document.getRootElement();
43             List employeeList = employees.getChildren("employee");
44             for (int i = 0; i < employeeList.size(); i++) {
45                 Element employee = (Element) employeeList.get(i);
46                 List employeeInfo = employee.getChildren();
47                 for (int j = 0; j < employeeInfo.size(); j++) {
48                     System.out.println(((Element) employeeInfo.get(j))
49                             .getName()
50                             + ":" + ((Element) employeeInfo.get(j)).getValue());
51                 }
52             }
53         } catch (JDOMException e) {
54             e.printStackTrace();
55         } catch (IOException e) {
56             e.printStackTrace();
57         }
58     }
59 }



关键字: java xml java解析xml dom解析 xslt sax JDOM DOM4J
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java解析XML的四种方法详解 的相关文章

  • 如何找到 AS3 中 xml 子级的数量

    所以现场文档说这是在 XML 对象上调用 length 对于 XML 对象 此方法始终 返回整数 1 length XMLList 类的方法返回一个 对于 XMLList 对象 值为 1 仅包含一个值 我在 xml 上调用它 如下所示
  • 无法解析 Java 中的方法

    我有一个Question具有 4 个的对象Answer里面的物体 在 Question java 我有一个方法是 public Answer getA return a 在另一种方法中我有 if questions get randomNu
  • Java ASN.1 编译器

    现在我正在使用二进制笔记 http bnotes sourceforge net 解析 ASN 1 文件以在 Java 项目中使用 它采用 ASN 1 定义并生成 Java 类 让我可以操作 ASN 1 文件 我用扩展标记碰壁了 因为它不支
  • 将 hyperjaxb3 升级到 jpa 2.1

    我正在尝试在使用 maven jpa hibernate 和 hyperjaxb 的 eclipse 项目中升级到 JPA 2 1 当我尝试执行以下操作时出现以下错误Run As Run on Server从日食内部 java lang N
  • 如何替换 XSLT 1 中的多个文本子字符串

    对于 XSLT 1 0 XSLT 2 0 的正则表达式方法通常不可用 是否有任何非正则表达式方法可以替换源 xml 文档中节点中的多个字段 例如转换
  • Android 上 WebRTC 的自定义视频源

    Overview 我想使用自定义视频源通过 WebRTC Android 实现来直播视频 如果我理解正确的话 现有的实现仅支持 Android 手机上的前置和后置摄像头 以下类与此场景相关 Camera1Enumerator java ht
  • HTTPURLConnection 不遵循从 HTTP 到 HTTPS 的重定向

    我不明白为什么JavaHttpURLConnection不遵循从 HTTP 到 HTTPS URL 的 HTTP 重定向 我使用以下代码来获取页面https httpstat us https httpstat us import java
  • 传输级别信息与 SOAP 消息命名空间 URI 不匹配

    我收到错误 Transport level information does not match with SOAP Message namespace URI 要求您提供详细信息以解决问题 我在客户端设置了以下内容 HttpTranspo
  • 将 Flash 文件上传与 JSF 集成

    我看到我们可以通过flash文件上传来上传多个文件 喜欢SWF上传 http code google com p swfupload or YUI上传器 http yuilibrary com yui docs uploader 是否可以将
  • 在 Spring Boot 异常处理期间保留自定义 MDC 属性

    简短版本 有足够的细节 如何保留添加在MDC中的属性doFilter 的方法javax servlet Filter执行 public void doFilter ServletRequest request ServletResponse
  • 在文档片段中查找注释或文本节点

    我必须清理 Nokogiri HTML DocumentFragment 文档 删除仅包含空格的注释节点和文本节点 这是一个例子 html p paragraph p p paragraph p p paragraph p doc Noko
  • 阻止 GWT 中的事件冒泡

    我有以下代码片段 changeTextArea 是一个 TextArea 对象 changeTextArea addKeyboardListener new KeyboardListenerAdapter public void onKey
  • 了解 Etc/GMT 时区

    Apple 在从 App Store 返回自动续订订阅收据时使用 Etc GMT 时区的理由是什么 Etc GMT 时区到底是什么 Java SDK 能理解这个时区吗 或者我是否必须使用其他第三方库 例如乔达时间 http www joda
  • 为什么 writeObject 抛出 java.io.NotSerializedException 以及如何修复它?

    我有这个异常 我不明白为什么会抛出它 或者我应该如何处理它 try os writeObject element catch IOException e e printStackTrace Where element is a Transf
  • Hibernate - 如何通过 Hibernate 将 java.net.URL 存储到数据库中

    我有一块田地URL countryURL in a Country班级 我想将其数据存储到COUNTRY通过 Hibernate 将表存储在数据库中 哪个休眠type我应该在休眠映射文件中使用
  • 告诉 JAXB 使用注释将 解组为 Date 类

    将 JAXB 与 Java First 一起使用时 类型的字段 属性java util Date编组和解编为xs dateTime一切都按预期进行 但是如果字段 属性的类型是Object JAXB 解组xs dateTimeto XMLGr
  • SSLHandShakeException 没有适当的协议

    我最近向我的网站添加了 SSL 可以通过 https 访问它 现在 当我的 java 应用程序尝试向我的网站发出请求并使用缓冲读取器从中读取时 它会生成此堆栈跟踪 我没有使用自签名证书 该证书来自 Namecheap 它使用 COMODO
  • 根据另一个列表的顺序对列表进行排序[重复]

    这个问题在这里已经有答案了 我需要对列表进行排序Person对象 List
  • Java 和 SQL Server 中的精度噩梦

    我一直在与 Java 和 SQL Server 中的精确噩梦作斗争 直到我不再知道了 就我个人而言 我理解这个问题及其根本原因 但向地球另一端的客户解释这一点是不可行的 至少对我来说 情况是这样的 我在 SQL Server 中有两列 Qt
  • Spring Data JPA 存储库,具有规范、分页和标准 fetch-join

    我正在使用具有规范和分页功能的 Spring Data JPA 存储库实现实体列表的搜索 过滤服务 我正在尝试减少查询数量 n 1 问题 并使用条件获取机制获取嵌套数据 我有两个实体类 Entity Table name delegatio

随机推荐

  • CSDN-markdown编辑器使用说明

    欢迎使用Markdown编辑器写博客 本Markdown编辑器使用StackEdit修改而来 用它写博客 将会带来全新的体验哦 Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列
  • 从mpeg ts文件中提取I帧(6):I帧的显示

    I帧的显示依赖于opencv 这里用到的版本是3 4 0 显示的数据是pes解码后的rgb数据 代码比较简单 用opencv主要考虑到以后可以对ts流进行一些特征识别 include
  • 7-43 查询水果价格

    给定四种水果 分别是苹果 apple 梨 pear 桔子 orange 葡萄 grape 单价分别对应为3 00元 公斤 2 50元 公斤 4 10元 公斤 10 20元 公斤 首先在屏幕上显示以下菜单 1 apple 2 pear 3 o
  • 各种协议

    百度百科http baike baidu com view 16603 htm fromtitle E8 AE A1 E7 AE 97 E6 9C BA E7 BD 91 E7 BB 9C E5 8D 8F E8 AE AE fromid
  • json.decoder.JSONDecodeError: Invalid control character at: line 1 column 3,python中str与json类型转换报错如何解

    使用json转 json数据保密 再此不展示 判断类型 print type str json json dump json loads str json 报错如下 json decoder JSONDecodeError Invalid
  • 【Data Mining】【第五章作业】

    文章目录 一 单选题 二 多选题 三 填空题 一 单选题 1 回归分析中使用的距离是点到直线的垂直坐标距离 最小二乘准则是指 A B C D 正确答案 D 2 回归分析的步骤为 进行相关分析 建立预测模型 确定变量 确定预测值 计算预测误差
  • yolov4训练自己的数据集

    YOLOv4训练自己的数据集 1 电脑配置 2 下载并配置 3 测试 4 训练 1 电脑配置 win10 OpenCV4 1 VS2019 cuda10 2 2 下载并配置 1 YOLOv4网址 https github com Alexe
  • aix升级openssh_AIX6.1上源码编译升级openssh6.6p1

    最近因为绿盟扫描到AIX5 3 AIX6 1系统有openssh高危漏洞 OPENSSH6 4之前的都报高危漏洞 IBM官网上也只有最新的openssh6 0安装文件供下载 没办法只有自己试验的用源码来安装升级 期间各种报错 搞了差不多一周
  • educoder答案pythonnumpy_Educoder 题解

    Solution 4 2 第一关 求个导发现有两个根 分别二分就行了 importnumpy as np E 1e 6 begin 请在此填写代码 计算6 np exp x 113 x 17 0的根 deff x return 6 np e
  • 语义分割实践—耕地提取(二分类)

    开篇 感谢李沐老师团队为深度学习教学做出的巨大贡献 对李沐老师及团队致以深深的敬意 同时 对技术开发社区以及编程技术网站的优质创作者们 Jack Cui等 表示深深的感谢 一 深度学习网络中的常见概念 一 Ground Truth 通常指人
  • 06 CubeMX HAL库stm32作从机 硬件I2C中断接收无BUG程序

    文章目录 CubeMX HAL库stm32作从机 硬件I2C中断接收无BUG程序 一 设置烧录模式 二 使用外部晶振 三 开启IIC中断 四 设置IIC参数 五 配置外部时钟 六 设置工程信息 七 代码生成项配置 八 在Keil中打开工程
  • on conflict do update

    使用ON CONFLICT DO UPDATE语法的主要优点是可以使SQL语句更加简洁和高效 相比于传统的INSERT和UPDATE两个步骤执行 使用ON CONFLICT DO UPDATE可以将这两个步骤合并为一个数据库操作 从而减少了
  • IntelliJ IDEA 15款 神级超级牛逼插件推荐(自用,真的超级牛逼)

    来源 http suo im 5X5Rql 满满的都是干货 所有插件都是在 ctrl alt s 里的plugins 里进行搜索安装 1 CodeGlance 代码迷你缩放图插件 2 Codota 代码提示工具 扫描你的代码后 根据你的敲击
  • android检测新版本并下载安装的方法

    很多客户端程序都有检测是否有更新的功能 本文大体介绍了其实现过程 此功能模块也是开源中国客户端中的源码 个人感觉用到的安卓基础知识还是比较全面的 很适合初学者学习进阶 检查App更新 param context param isShowMs
  • Win10 64bit系统中VS2015与OpenCV3.2配置开发环境

    1 将OpenCV解压到D盘根目录 个人认为纯英文目录比较保险 2 VS2015建立控制台工程 设置为64位debug开发环境 3 配置工程属性 在可执行目录 executable directories 中 确认已包含opencv包里的b
  • VRTK4.0 学习Day3

    假装是第三天吧 我这里的情况是 勾选了这个支持之后 会将下方这个XR Plug in Managerment就下好了 我还打开了那个保龄球的那个项目 那里面的这个XR Plug in Managerment是没有的 也不要去导入 我导入之后
  • windows下搭建编译chromium的开发环境

    本篇为windows下搭建编译chromium的方法 mac篇 mac下搭建编译chromium的开发环境 二七 CSDN博客 linux篇 linux 搭建和编译 chromium 环境 二七 CSDN博客 注意 搭建部署chromium
  • js 将一维数组转成二维数组

    开发时遇上一个将一维数组转换成二维数据结构的要求 记录一下工具函数 说明 这是一个函数 直接复制到
  • 接口测试这么玩才明白

    接口测试作为当下提升测试效能的利器 逐步被大家所认同 但同时很多团队在落地接口自动化时 又会感觉效果不是很明显 投入了大量的时间 写了很多脚本 但是效果并不是很明显 其中有各种问题 结合某团队的现状 分享一些实践经验 仅供参考 引入接口测试
  • Java解析XML的四种方法详解

    XML现在已经成为一种通用的数据交换格式 它的平台无关性 语言无关性 系统无关性 给数据集成与交互带来了极大的方便 对于XML本身的语法知识与技术细节 需要阅读相关的技术文献 这里面包括的内容有DOM Document Object Mod