xml的Dom4j解析规则
一,xml的样本
- <?xml version="1.0" encoding="utf-8"?>
- <contactList>
- <contact id="001">
- <name>张三</name>
- <age>20</age>
- <phone>134222223333</phone>
- <email>zhangsan@qq.com</email>
- <qq>432221111</qq>
- </contact>
- <contact id="002">
- <name>李四</name>
- <age>20</age>
- <phone>134222225555</phone>
- <email>lisi@qq.com</email>
- <qq>432222222</qq>
- </contact>
- </contactList>
二,Dom4j的读的套路
2.1,Dom4j解析xml获取整个文档的信息
- //1.创建一个xml解析器对象
- 2 SAXReader reader = new SAXReader();
- //2.读取xml文档,返回Document对象
- Document doc = reader.read(new File("./src/contact.xml"));
- System.out.println(doc);
2.2,Dom4j解析xml获取第一个子节点对象,(就是根节点的对象)
- //1.读取xml文档,返回Document对象
- SAXReader reader = new SAXReader();
- Document doc = reader.read(new File("./src/contact.xml"));
- //2.nodeIterator: 得到当前节点下的所有子节点对象(不包含孙以下的节点)
- Iterator<Node> it = doc.nodeIterator();
- while(it.hasNext()){//判断是否有下一个元素
- Node node = it.next();//取出元素
- String name = node.getName();//得到节点名称
- System.out.println(name);
- System.out.println(node.getClass());
- }
- }
2.3,Dom4j解析xml获取根节点对象下一级的节点名称
- //1.读取xml文档,返回Document对象
- SAXReader reader = new SAXReader();
- Document doc = reader.read(new File("./src/contact.xml"));
- //2.nodeIterator: 得到当前节点下的所有子节点对象(不包含孙以下的节点)
- Iterator<Node> it = doc.nodeIterator();
- while(it.hasNext()){//判断是否有下一个元素
- Node node = it.next();//取出元素
- String name = node.getName();//得到节点名称
- //继续取出其下面的子节点
- //只有标签节点才有子节点
- //判断当前节点是否是标签节点
- if(node instanceof Element){
- Element elem = (Element)node;
- Iterator<Node> it2 = elem.nodeIterator();
- while(it2.hasNext()){
- Node n2 = it2.next();
- System.out.println(n2.getName());
- }
- }
- }
- }
- null
- contact
- null
- contact
- null
上面的null就是格式中的空格引起的。
2.4,Dom4j解析xml获取所有的节点
- public void test2() throws Exception{
- //1.读取xml文档,返回Document对象
- SAXReader reader = new SAXReader();
- Document doc = reader.read(new File("./src/contact.xml"));
- //得到根标签
- Element rooElem = doc.getRootElement();
- getChildNodes(rooElem);
- }
- /**
- * 获取 传入的标签下的所有子节点
- * @param elem
- */
- private void getChildNodes(Element elem){
- System.out.println(elem.getName());
- //得到子节点
- Iterator<Node> it = elem.nodeIterator();
- while(it.hasNext()){
- Node node = it.next();
- //1.判断是否是标签节点,因为只有标签节点才有子节点
- if(node instanceof Element){
- Element el = (Element)node;
- //递归
- getChildNodes(el);
- }
- };
- }
- contactList
- contact
- name
- age
- phone
- contact
- name
- age
- phone
2.5,Dom4j解析xml获取根标签的另一种方式
- //1.读取xml文档,返回Document对象
- SAXReader reader = new SAXReader();
- Document doc = reader.read(new File("./src/contact.xml"));
- //2.得到根标签
- Element rootElem = doc.getRootElement();
- //得到标签名称
- String name = rootElem.getName();
- System.out.println(name);
contactList
2.6,Dom4j解析xml获取根标签下的第一个子标签的另一种方式
- //1.读取xml文档,返回Document对象
- SAXReader reader = new SAXReader();
- Document doc = reader.read(new File("./src/contact.xml"));
- //2.得到根标签
- Element rootElem = doc.getRootElement();
- //得到标签名称
- String name = rootElem.getName();
- //3.得到当前标签下指定名称的第一个子标签
- Element contactElem = rootElem.element("contact");
- System.out.println(contactElem.getName());
contact
2.7,Dom4j解析xml获取指定标签下的所有的子标签
- //1.读取xml文档,返回Document对象
- SAXReader reader = new SAXReader();
- Document doc = reader.read(new File("./src/contact.xml"));
- //2.得到根标签
- Element rootElem = doc.getRootElement();
- //得到标签名称
- //4.得到当前标签下指定名称的所有子标签
- Iterator<Element> it = rootElem.elementIterator("contact");
- while(it.hasNext()){
- Element elem = it.next();
- System.out.println(elem.getName());
- }
contact
contact
2.8,Dom4j解析xml获取更标签下的所有字标签,这个是没有指定的,就是更标签下面的,可能是contact,也可能是abc之类的。
- //1.读取xml文档,返回Document对象
- SAXReader reader = new SAXReader();
- Document doc = reader.read(new File("./src/contact.xml"));
- //2.得到根标签
- Element rootElem = doc.getRootElement();
- //5.得到当前标签下的的所有子标签
- List<Element> list = rootElem.elements();
- //遍历List的方法
- //1)传统for循环 2)增强for循环 3)迭代器
- /*for(int i=0;i<list.size();i++){
- Element e = list.get(i);
- System.out.println(e.getName());
- }*/
- /* for(Element e:list){
- System.out.println(e.getName());
- }*/
- /*
- Iterator<Element> it = list.iterator(); //ctrl+2 松开 l
- while(it.hasNext()){
- Element elem = it.next();
- System.out.println(elem.getName());
- }*/
contact
contact
2.9,Dom4j解析xml获取更深一层次的标签
- //1.读取xml文档,返回Document对象
- SAXReader reader = new SAXReader();
- Document doc = reader.read(new File("./src/contact.xml"));
- //获取更深层次的标签(方法只能一层层地获取)
- Element nameElem = doc.getRootElement().
- element("contact").element("name");
- System.out.println(nameElem.getName());
name
2.10,Dom4j解析xml获取指定属性的属性值
- SAXReader reader = new SAXReader();
- Document doc = reader.read(new File("./src/contact.xml"));
- //获取属性:(先获的属性所在的标签对象,然后才能获取属性)
- //1.得到标签对象
- Element contactElem = doc.getRootElement().element("contact");
- //2.得到属性
- //2.1 得到指定名称的属性值
- String idValue = contactElem.attributeValue("id");
- System.out.println(idValue);
001
2.11,Dom4j解析xml获取指定属性的属性值和属性名(指定标签有一个属性)
- SAXReader reader = new SAXReader();
- Document doc = reader.read(new File("./src/contact.xml"));
- //获取属性:(先获的属性所在的标签对象,然后才能获取属性)
- //1.得到标签对象
- Element contactElem = doc.getRootElement().element("contact");
- //2.2 得到指定属性名称的属性对象
- Attribute idAttr = contactElem.attribute("id");
- //getName: 属性名称 getValue:属性值
- System.out.println(idAttr.getName() +"=" + idAttr.getValue());
id=001
2.12,Dom4j解析xml获取标签的所有的属性的属性值和属性名(指定标签有多个属性)
- //1.读取xml文档,返回Document对象
- SAXReader reader = new SAXReader();
- Document doc = reader.read(new File("./src/contact.xml"));
- //获取属性:(先获的属性所在的标签对象,然后才能获取属性)
- //1.得到标签对象
- Element contactElem = doc.getRootElement().element("contact");
- //2.3 得到所有属性对象,返回LIst集合
- List<Attribute> list = contactElem.attributes();
- //遍历属性
- for (Attribute attr : list) {
- System.out.println(attr.getName()+"="+attr.getValue());
- }
id=001
2.13,Dom4j解析xml获取所有的属性的属性值和属性名(指定标签有多个属性)
- //1.读取xml文档,返回Document对象
- SAXReader reader = new SAXReader();
- Document doc = reader.read(new File("./src/contact.xml"));
- //获取属性:(先获的属性所在的标签对象,然后才能获取属性)
- //1.得到标签对象
- Element contactElem = doc.getRootElement().element("contact");
- //2.4 得到所有属性对象,返回迭代器
- Iterator<Attribute> it = contactElem.attributeIterator();
- while(it.hasNext()){
- Attribute attr = it.next();
- System.out.println(attr.getName()+"="+attr.getValue());
- }
id=001
2.14,Dom4j解析xml获取指定标签的文本内容
- //1.读取xml文档,返回Document对象
- SAXReader reader = new SAXReader();
- Document doc = reader.read(new File("./src/contact.xml"));
- Element nameELem =
- doc.getRootElement().element("contact").element("name");
- //1. 得到文本
- String text = nameELem.getText();
- System.out.println(text);
张三
2.15,Dom4j解析xml获取指定标签的文本内容
- //1.读取xml文档,返回Document对象
- SAXReader reader = new SAXReader();
- Document doc = reader.read(new File("./src/contact.xml"));
- //2. 得到指定子标签名的文本内容
- String text2 =
- doc.getRootElement().element("contact").elementText("phone");
- System.out.println(text2);
- }
134222223333
三,案例一(原模原样的输出xml格式的数据)
3.1,获取整个xml文档,并且格式保持不变
- @Test
- public void test() throws Exception{
- //读取xml文档
- SAXReader reader = new SAXReader();
- Document doc =
- reader.read(new File("./src/contact.xml"));
- //读取根标签
- Element rootELem = doc.getRootElement();
- StringBuffer sb = new StringBuffer();
- getChildNodes(rootELem,sb);
- System.out.println(sb.toString());
- }
- /**
- * 获取当前标签的所有子标签
- */
- private void getChildNodes(Element elem,StringBuffer sb){
- //System.out.println(elem.getName());
- //开始标签
- sb.append("<"+elem.getName());
- //得到标签的属性列表
- List<Attribute> attrs = elem.attributes();
- if(attrs!=null){
- for (Attribute attr : attrs) {
- //System.out.println(attr.getName()+"="+attr.getValue());
- sb.append(" "+attr.getName()+"=\""+attr.getValue()+"\"");
- }
- }
- sb.append(">");
- //得到文本
- //String content = elem.getText();
- //System.out.println(content);
- Iterator<Node> it = elem.nodeIterator();
- while(it.hasNext()){
- Node node = it.next();
- //标签
- if(node instanceof Element){
- Element el = (Element)node;
- getChildNodes(el,sb);
- }
- //文本
- if(node instanceof Text){
- Text text = (Text)node;
- sb.append(text.getText());
- }
- }
- //结束标签
- sb.append("</"+elem.getName()+">");
- }
- <contactList>
- <contact id="001">
- <name>张三</name>
- <age>20</age>
- <phone>134222223333</phone>
- <email>zhangsan@qq.com</email>
- <qq>432221111</qq>
- </contact>
- <contact id="002">
- <name>李四</name>
- <age>20</age>
- <phone>134222225555</phone>
- <email>lisi@qq.com</email>
- <qq>432222222</qq>
- </contact>
- </contactList>
会原模原样的把上面的输出的。
四,案例二,把xml的属性值封装到对象中来。
4.1,讲解
- public class Contact {
- private String id;
- private String name;
- private String age;
- private String phone;
- private String email;
- private String qq;
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getAge() {
- return age;
- }
- public void setAge(String age) {
- this.age = age;
- }
- public String getPhone() {
- return phone;
- }
- public void setPhone(String phone) {
- this.phone = phone;
- }
- public String getEmail() {
- return email;
- }
- public void setEmail(String email) {
- this.email = email;
- }
- public String getQq() {
- return qq;
- }
- public void setQq(String qq) {
- this.qq = qq;
- }
- @Override
- public String toString() {
- return "Contact [age=" + age + ", email=" + email + ", id=" + id
- + ", name=" + name + ", phone=" + phone + ", qq=" + qq + "]";
- }
- public static void main(String[] args) throws Exception{
- List<Contact> list = new ArrayList<Contact>();
- //读取xml,封装对象
- SAXReader reader = new SAXReader();
- Document doc = reader.read(new File("./src/contact.xml"));
- //读取contact标签
- Iterator<Element> it = doc.getRootElement().elementIterator("contact");
- while(it.hasNext()){
- Element elem = it.next();
- //创建Contact
- Contact contact = new Contact();
- contact.setId(elem.attributeValue("id"));
- contact.setName(elem.elementText("name"));
- contact.setAge(elem.elementText("age"));
- contact.setPhone(elem.elementText("phone"));
- contact.setEmail(elem.elementText("email"));
- contact.setQq(elem.elementText("qq"));
- list.add(contact);
- }
- for (Contact contact : list) {
- System.out.println(contact);
- }
- }
- Contact [age=20, email=zhangsan@qq.com, id=001, name=张三, phone=134222223333, qq=432221111]
- Contact [age=20, email=lisi@qq.com, id=002, name=李四, phone=134222225555, qq=432222222]
五,Dom4j的写的套路
5.1,Dom4j解析xml写出没有改变任何东西的输出
- //一、读取或创建一个Document对象
- //读取day07项目的xm文件
- Document doc = new SAXReader().read(new File("./src/contact.xml"));
- //二、修改Document对象内容
- //三、把修改后的Document对象写出到xml文档中
- //指定文件输出的位置
- FileOutputStream out = new FileOutputStream("e:/contact.xml");
- //1.创建写出对象
- XMLWriter writer = new XMLWriter(out);
- //2.写出对象
- writer.write(doc);
- //3.关闭流
- writer.close();
- }
5.2,Dom4j解析xml写出改变输出格式的输出
- Document doc = new SAXReader().read(new File("./src/contact.xml"));
- //指定文件输出的位置
- FileOutputStream out = new FileOutputStream("e:/contact.xml");
- /**
- * 1.指定写出的格式
- */
- OutputFormat format = OutputFormat.createCompactFormat(); //紧凑的格式.去除空格换行.项目上线的时候
- //OutputFormat format = OutputFormat.createPrettyPrint(); //漂亮的格式.有空格和换行.开发调试的时候
- //1.创建写出对象
- XMLWriter writer = new XMLWriter(out,format);
- //2.写出对象
- writer.write(doc);
- //3.关闭流
- writer.close();
- }
5.3,Dom4j解析xml写出改变编码的输出
- Document doc = new SAXReader().read(new File("./src/contact.xml"));
- //指定文件输出的位置
- FileOutputStream out = new FileOutputStream("e:/contact.xml");
- /**
- * 1.指定写出的格式
- */
- OutputFormat format = OutputFormat.createCompactFormat(); //紧凑的格式.去除空格换行.项目上线的时候
- //OutputFormat format = OutputFormat.createPrettyPrint(); //漂亮的格式.有空格和换行.开发调试的时候
- /**
- * 2.指定生成的xml文档的编码
- * 同时影响了xml文档保存时的编码 和 xml文档声明的encoding的编码(xml解析时的编码)
- * 结论: 使用该方法生成的xml文档避免中文乱码问题。
- */
- format.setEncoding("utf-8");
- //1.创建写出对象
- XMLWriter writer = new XMLWriter(out,format);
- //2.写出对象
- writer.write(doc);
- //3.关闭流
- writer.close();
5.4,Dom4j解析xml写出增加标签属性
- public void test1() throws Exception{
- /**
- * 1.创建文档
- */
- Document doc = DocumentHelper.createDocument();
- /**
- * 2.增加标签
- */
- Element rootElem = doc.addElement("contactList");
- //doc.addElement("contactList");
- Element contactElem = rootElem.addElement("contact");
- contactElem.addElement("name");
- /**
- * 3.增加属性
- */
- contactElem.addAttribute("id", "001");
- contactElem.addAttribute("name", "eric");
- //把修改后的Document对象写出到xml文档中
- FileOutputStream out = new FileOutputStream("e:/contact.xml");
- OutputFormat format = OutputFormat.createPrettyPrint();
- format.setEncoding("utf-8");
- XMLWriter writer = new XMLWriter(out,format);
- writer.write(doc);
- writer.close();
- }
5.5,Dom4j解析xml写出修改属性值和文本
- @Test
- public void test2() throws Exception{
- Document doc = new SAXReader().read(new File("./src/contact.xml"));
- /**
- * 方案一: 修改属性值 1.得到标签对象 2.得到属性对象 3.修改属性值
- */
- //1.1 得到标签对象
- /*
- Element contactElem = doc.getRootElement().element("contact");
- //1.2 得到属性对象
- Attribute idAttr = contactElem.attribute("id");
- //1.3 修改属性值
- idAttr.setValue("003");
- */
- /**
- * 方案二: 修改属性值
- */
- //1.1 得到标签对象
- /*
- Element contactElem = doc.getRootElement().element("contact");
- //1.2 通过增加同名属性的方法,修改属性值
- contactElem.addAttribute("id", "004");
- */
- /**
- * 修改文本 1.得到标签对象 2.修改文本
- */
- Element nameElem = doc.getRootElement().
- element("contact").element("name");
- nameElem.setText("李四");
- FileOutputStream out = new FileOutputStream("e:/contact.xml");
- OutputFormat format = OutputFormat.createPrettyPrint();
- format.setEncoding("utf-8");
- XMLWriter writer = new XMLWriter(out,format);
- writer.write(doc);
- writer.close();
- }
5.6,Dom4j解析xml写出删除标签和属性
- @Test
- public void test3() throws Exception{
- Document doc = new SAXReader().read(new File("./src/contact.xml"));
- /**
- * 1.删除标签 1.1 得到标签对象 1.2 删除标签对象
- */
- // 1.1 得到标签对象
- /*
- Element ageElem = doc.getRootElement().element("contact")
- .element("age");
- //1.2 删除标签对象
- ageElem.detach();
- //ageElem.getParent().remove(ageElem);
- */
- /**
- * 2.删除属性 2.1得到属性对象 2.2 删除属性
- */
- //2.1得到属性对象
- //得到第二个contact标签
- Element contactElem = (Element)doc.getRootElement().
- elements().get(1);
- //2.2 得到属性对象
- Attribute idAttr = contactElem.attribute("id");
- //2.3 删除属性
- idAttr.detach();
- //idAttr.getParent().remove(idAttr);
- FileOutputStream out = new FileOutputStream("e:/contact.xml");
- OutputFormat format = OutputFormat.createPrettyPrint();
- format.setEncoding("utf-8");
- XMLWriter writer = new XMLWriter(out,format);
- writer.write(doc);
- writer.close();
- }
5.7,Dom4j解析xml写出生成指定的xml文件
- @Test
- public void test1() throws Exception{
- //1.内存创建xml文档
- Document doc = DocumentHelper.createDocument();
- //2.写入内容
- Element rootElem = doc.addElement("Students");
- //2.1 增加标签
- Element studentElem1 = rootElem.addElement("Student");
- //2.2 增加属性
- studentElem1.addAttribute("id", "1");
- //2.3 增加标签,同时设置文本
- studentElem1.addElement("name").setText("张三");
- studentElem1.addElement("gender").setText("男");
- studentElem1.addElement("grade").setText("计算机1班");
- studentElem1.addElement("address").setText("广州天河");
- //2.1 增加标签
- Element studentElem2 = rootElem.addElement("Student");
- //2.2 增加属性
- studentElem2.addAttribute("id", "2");
- //2.3 增加标签,同时设置文本
- studentElem2.addElement("name").setText("李四");
- studentElem2.addElement("gender").setText("女");
- studentElem2.addElement("grade").setText("计算机2班");
- studentElem2.addElement("address").setText("广州越秀");
- //3.内容写出到xml文件
- //3.1 输出位置
- FileOutputStream out = new FileOutputStream("e:/student.xml");
- //3.2 指定格式
- OutputFormat format = OutputFormat.createPrettyPrint();
- // 设置编码
- format.setEncoding("utf-8");
- XMLWriter writer = new XMLWriter(out,format);
- //3.3 写出内容
- writer.write(doc);
- //3.4关闭资源
- writer.close();
- }
5.8,Dom4j解析xml写出修改id为2的的学生的姓名
- @Test
- public void test2() throws Exception{
- //1.查询到id为2的学生
- Document doc = new SAXReader().read(new File("e:/student.xml"));
- //1.1 找到所有的Student标签
- Iterator<Element> it = doc.getRootElement().elementIterator("Student");
- while(it.hasNext()){
- Element stuElem = it.next();
- //1.2 查询id为id的学生标签
- if(stuElem.attributeValue("id").equals("2")){
- stuElem.element("name").setText("王丽");
- break;
- }
- }
- //3.1 输出位置
- FileOutputStream out = new FileOutputStream("e:/student.xml");
- //3.2 指定格式
- OutputFormat format = OutputFormat.createPrettyPrint();
- // 设置编码
- format.setEncoding("utf-8");
- XMLWriter writer = new XMLWriter(out,format);
- //3.3 写出内容
- writer.write(doc);
- //3.4关闭资源
- writer.close();
- }
5.9,Dom4j解析xml写出删除id为2的学生的
- public void test3() throws Exception{
- //1.查询到id为2的学生
- Document doc = new SAXReader().read(new File("e:/student.xml"));
- //1.1 找到所有的Student标签
- Iterator<Element> it = doc.getRootElement().elementIterator("Student");
- while(it.hasNext()){
- Element stuElem = it.next();
- //1.2 查询id为id的学生标签
- if(stuElem.attributeValue("id").equals("2")){
- //1.3 删除该学生标签
- stuElem.detach();
- break;
- }
- }
- //3.1 输出位置
- FileOutputStream out = new FileOutputStream("e:/student.xml");
- //3.2 指定格式
- OutputFormat format = OutputFormat.createPrettyPrint();
- // 设置编码
- format.setEncoding("utf-8");
- XMLWriter writer = new XMLWriter(out,format);
- //3.3 写出内容
- writer.write(doc);
- //3.4关闭资源
- writer.close();
- }
xml的Dom4j解析规则的更多相关文章
- xml之dom4j解析
* 使用dom4j解析xml 实例在java520里面 TextDom4j * dom4j,是一个组织,针对xml解析,提供解析器dom4j * dom4j不是javase的一部分,想要使用第一步需要 ...
- XML—代码—DOM4J解析
什么是xml: 众所周知,xml常用语数据存储和传输,文件后缀为 .xml: 它是可扩展标记语言(Extensible Markup Language,简称XML),是一种标记语言. 如何定义这些标记 ...
- java基础 xml 使用dom4j解析 xml文件 servlet根据pattern 找到class
package com.swift.kaoshi; import java.io.File; import java.util.List; import java.util.Scanner; impo ...
- xml的xPath解析规则
一,为什么要用xpath技术 问题:当使用dom4j查询比较深的层次结构的节点(标签,属性,文本),比较麻烦!!! 二,xpath的规则 2.1,/根元素的案例 /AAA 选择根元素AAA ...
- XML(四)dom4j解析XML
使用dom4j须要导入jar包 jar包下载地址:http://pan.baidu.com/s/1o65jWRw 将dom4j-1.6.1.jar包导入Eclipse book2.xml <?x ...
- xml的SAX解析规则
一,为什么要用它 1.1,讲解 DOM解析原理:一次性把xml文档加载进内存,然后在内存中构建Document树. 对内存要求比较要. 缺点: 不适合读取大容量的xml文件,容易导致内存溢出. SAX ...
- Dom4j解析xml
public class Dom4jTest { // Dom4j解析xml // 因为所有的方法都需要Dom树 static Document document = null; static Ele ...
- 【java项目实战】dom4j解析xml文件,连接Oracle数据库
简单介绍 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方.我们还是看一下官方给出的解释.例如以下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT ...
- xml(3)--dom4j实现crud操作
1.XML解析技术概述 (1)XML解析方式分为两种:dom和sax dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种标准方 ...
随机推荐
- BZOJ 3881: [Coci2015]Divljak [AC自动机 树链的并]
3881: [Coci2015]Divljak 题意:添加新文本串,询问某个模式串在多少种文本串里出现过 模式串建AC自动机,考虑添加一个文本串,走到的节点记录下来求树链的并 方法是按dfs序排序去重 ...
- Windows 动态链接库编程
Windows 动态链接库编程 1.介绍Windows操作系统是应用最关的操作系统,因此动态链接库也为程序员所熟悉,即使对于普通的使用者来说,很多时候也会碰到.dll结尾的文件,这就是动态链接库文件 ...
- 应用负载均衡之LVS(二):VS_TUN和VS_DR的arp问题
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- 关于git post-receive 钩子
登录 git服务器 进入你项目所在git文件夹 cd /var/opt/gitlab/git-data/repositories/liangyuquan/yfg.git cd hooks vim po ...
- css的浮动与定位
显示与隐藏 标签 属性 值 效果 区别 css的style display none 元素不可见 不占页面空间 css的style visibility hidden 元素不可见 占页面空间 disp ...
- Python面向对象篇(2)-继承
在发表本篇随笔的时候,距离上一次发已经有一个多月了,很多朋友私信我为什么不持续更新了,在这里先跟大家说声抱歉.因为年底的工作较为繁重,实在分不出精力,更重要的也是在思考后面进阶的部分要按怎样的顺序写, ...
- CentOs下 SVN版本控制的安装(包括yum与非yum)
一.yum安装 rpm -qa subversion //检查是否安装了低版本的SVN yum remove subversion //如果存储旧版本,卸载旧版本SVN 开始安装 yum -y ins ...
- 项目中常用的19条MySQL优化
声明一下:下面的优化方案都是基于 " Mysql-索引-BTree类型 " 的 一.EXPLAIN 做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划. 下面来个简单 ...
- 【推荐】免费,19 款仿 Bootstrap 后台管理主题下载
声明: 1. 本篇文章提到的仿 Bootstrap 风格的主题,是基于 jQuery 的 ASP.NET MVC 控件库的主题. 2. FineUIMvc(基础版)完全免费,可以用于商业项目. 目录 ...
- 使用mongoVUE删除大量数据的情况下失效问题
昨天有一个系统出现了问题,导致半夜时大量的错误数据产生,早晨一早接到上边通知让把这些数据尽数删除. 不可否认在数据操作时mongoVUE更加直观,因此一般情况下我也都是使用这个工具,但是今天却出现了问 ...