XML_Dom4j_工厂模式_commons-io工具包_Base64
2021/4/29 18:27:06
本文主要是介绍XML_Dom4j_工厂模式_commons-io工具包_Base64,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
这里写目录标题
- XML Extensible Markup Language
- XML的约束 DTD Schema
- Schema约束
- 上一级目录回退 用..
- Dom4j 解析XML
- XPath 直接定位属性或标签(解决子标签太深的问题)导入相关类库
- Base64 64个字符来组成
- new String(byte[])
- 工厂模式(车工厂) 批量生产产品 批量生产对象 使用接口 是为了返回各种车的实现类 调用工厂类的方法来生产车,不需要自己new。生产车后可以重写接口的方法,使用车的功能
XML Extensible Markup Language
可扩展性的标记语言
编码存储为utf-8
既为开始又为结束
只允许有一个根标签
注释 在里面 ctrl+/
&less than
quotation 双引号
amd 与
character data 字符数字区
下面展示一些 内联代码片
。
// An highlighted block <?xml version="1.0" encoding="utf-8" ?> <persons> <person> <name>柳岩</name> <age>18</age> <sex>女</sex> <detail> 年龄 < > " & <![CDATA[ 年龄 <<<<<<<<< 18 .>>>> ]]> </detail> </person> <person> <name>赵丽颖</name> <age>15</age> <sex>女</sex> <address/> </person> </persons>
XML的约束 DTD Schema
PCDATA 只能是文本,不能是标签
下面展示一些 内联代码片
。
// An highlighted block books.xml <?xml version="1.0" encoding="UTF-8" ?> <!--导入DTD约束--> <!DOCTYPE books SYSTEM "bookshelf.dtd"> <books> <book> <name>Java入门到超神</name> <price>88.88</price> <author>左神</author> </book> <book> <name></name> <price></price> <author></author> </book> </books>
下面展示一些 内联代码片
。
// An highlighted block bookshelf.dtd <!ELEMENT books (book+)> <!ELEMENT book (name,price,author)> <!ELEMENT name (#PCDATA)> <!ELEMENT price (#PCDATA)> <!ELEMENT author (#PCDATA)>
Schema约束
下面展示一些 内联代码片
。
// An highlighted block books.xml <?xml version="1.0" encoding="UTF-8" ?> <!--导入约束 修改命名空间--> <书架 xmlns="http://www.itcast.cn/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.itcast.cn/ bookshelf.xsd"> <书> <书名></书名> <作者></作者> <售价></售价> </书> </书架>
下面展示一些 内联代码片
。
// An highlighted block bookshelf.xsd <?xml version="1.0" encoding="UTF-8" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.itcast.cn/" elementFormDefault="qualified"> <xs:element name='书架'> <xs:complexType> <xs:sequence maxOccurs='unbounded'> <xs:element name='书'> <xs:complexType> <xs:sequence> <xs:element name='书名' type='xs:string'/> <xs:element name='作者' type='xs:string'/> <xs:element name='售价' type='xs:double'/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
上一级目录回退 用…
Dom4j 解析XML
下面展示一些 内联代码片
。
// An highlighted block package day15XMLDom4jFactoryModelcommons_ioBase64.XML解析; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import javax.xml.parsers.SAXParser; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.List; public class Demo1 { public static void main(String[] args) throws FileNotFoundException, DocumentException { SAXReader reader = new SAXReader(); //加强基本输入流,可以解析xml文件 Document document = reader.read(new FileInputStream("src\\bean\\Contact.xml")); System.out.println("document = " + document); Element rootElement = document.getRootElement();//获得根标签 System.out.println("rootElement = " + rootElement); //获得根标签的名字 System.out.println("根标签的名字:"+rootElement.getName()); //获得第一个指定名称的子标签 Element firstContactEle = rootElement.element("contact"); System.out.println("firstContactEle = " + firstContactEle); //获得id属性值 String id = firstContactEle.attributeValue("id"); System.out.println("id = " + id); String vip = firstContactEle.attributeValue("vip"); System.out.println("vip = " + vip); //获得所有当前名称的子标签 List<Element> elements = firstContactEle.elements(); //遍历集合获取每个元素 for (Element element : elements) { String name = element.getName(); String text = element.getText(); System.out.println(name+"->"+text); } } }
下面展示一些 内联代码片
。
// An highlighted block Contact放到src下面 <?xml version="1.0" encoding="UTF-8"?> <contactList> <contact id="1" vip="true"> <name>潘金莲</name> <gender>女</gender> <email>panpan@itcast.cn</email> </contact> <contact id="2"> <name>武松</name> <gender id="1000">男</gender> <email>wusong@itcast.cn</email> </contact> <contact id="3"> <name>武大狼</name> <gender>男</gender> <email>wuda@itcast.cn</email> </contact> </contactList>
下面展示一些 内联代码片
。
// An highlighted block Demo.java package day15XMLDom4jFactoryModelcommons_ioBase64.XML解析.XML解析2; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.List; public class Demo { public static void main(String[] args) throws Exception { //定义联系人类 //创建解析器 SAXReader reader = new SAXReader(); //解析XML Document document = reader.read(new FileInputStream("itheima\\src\\Contact.xml")); //得到根标签 Element rootElement = document.getRootElement(); //获得所有contact子标签 List<Element> contacts = rootElement.elements("contact"); //创建集合保存所有的联系人对象 {id,vip,name,gender,email} ArrayList<Contact> list = new ArrayList<>(); //遍历获取每个contact标签,一个contact标签对应一个人 for (Element contact : contacts) { String idStr = contact.attributeValue("id"); int id = Integer.parseInt(idStr); String vipStr = contact.attributeValue("vip"); boolean vip = Boolean.parseBoolean(vipStr); //直接获取子标签内容 // System.out.println(contact.getName()+contact.getText()); String name = contact.elementText("name"); String gender = contact.elementText("gender"); String email = contact.elementText("email"); //根据数据创建Contact联系人对象 Contact c = new Contact(id, vip, name, gender, email); list.add(c); } //遍历集合 for (Contact contact : list) { System.out.println(contact); } } }
下面展示一些 内联代码片
。
// An highlighted block package day15XMLDom4jFactoryModelcommons_ioBase64.XML解析.XML解析2; public class Contact { private int id; private boolean vip; private String name; private String gender; private String email; public Contact() { } public Contact(int id, boolean vip, String name, String gender, String email) { this.id = id; this.vip = vip; this.name = name; this.gender = gender; this.email = email; } /** * 获取 * @return id */ public int getId() { return id; } /** * 设置 * @param id */ public void setId(int id) { this.id = id; } /** * 获取 * @return vip */ public boolean isVip() { return vip; } /** * 设置 * @param vip */ public void setVip(boolean vip) { this.vip = vip; } /** * 获取 * @return name */ public String getName() { return name; } /** * 设置 * @param name */ public void setName(String name) { this.name = name; } /** * 获取 * @return gender */ public String getGender() { return gender; } /** * 设置 * @param gender */ public void setGender(String gender) { this.gender = gender; } /** * 获取 * @return email */ public String getEmail() { return email; } /** * 设置 * @param email */ public void setEmail(String email) { this.email = email; } public String toString() { return "Contact{id = " + id + ", vip = " + vip + ", name = " + name + ", gender = " + gender + ", email = " + email + "}"; } }
下面展示一些 内联代码片
。
// An highlighted block <?xml version="1.0" encoding="UTF-8"?> <contactList> <contact id="1" vip="true"> <name>潘金莲</name> <gender>女</gender> <email>panpan@itcast.cn</email> </contact> <contact id="2"> <name>武松</name> <gender id="1000">男</gender> <email>wusong@itcast.cn</email> </contact> <contact id="3"> <name>武大狼</name> <gender>男</gender> <email>wuda@itcast.cn</email> </contact> </contactList>
XPath 直接定位属性或标签(解决子标签太深的问题)导入相关类库
调用对象就是. 相对路径
找属性,找元素。
Base64 64个字符来组成
苍老师
编码解码
方便在网络上传输。
苍老师文字根据这个变成数字 编码
类似字符集编码
new String(byte[])
工厂模式(车工厂) 批量生产产品 批量生产对象 使用接口 是为了返回各种车的实现类 调用工厂类的方法来生产车,不需要自己new。生产车后可以重写接口的方法,使用车的功能
//使用对象和创建对象是分开的,耦合性低
//拿来用就可以,有点像工具类
返回值是共同的接口。
这是多态的使用,不是让别人帮你创建对象
这篇关于XML_Dom4j_工厂模式_commons-io工具包_Base64的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享