一.学习xml注释作用
1.什么是xml注释?
XML注解是一种用于描述XML文档结构和元素内容的标记语言。它是通过在XML文档中使用特殊的标记来定义文档结构和元素属性的。XML注解通常用于数据编码和数据交换的应用程序之间,以确保数据的一致性和互操作性。 XML注解具有良好的可扩展性和可读性,因此它通常是最常用的数据交换格式之一。
2.为什么要学习xml注释,有什么用途?
XML注解主要有以下几个用途:
1. 描述文档结构:XML注解可以定义和描述XML文档的结构,包括文档头、根节点、元素、属性和命名空间等,从而使数据格式更加清晰明了。
2. 标记重要元素:XML注解还可以标记文档中一些重要的元素,如验证规则、约束条件和数据类型等。
3. 数据交换:XML注解定义好的数据结构具有良好的可扩展性和互操作性,可以用于数据交换场合,如Web服务端和客户端之间的数据交换。
4. 数据持久化:XML注解可以将数据格式化为文本格式,从而将其存储在文件或数据库中,以实现数据的持久化。
5. 客户端解析:XML注解格式化的数据可以被客户端解析,并用于生成用户界面,提供数据查询和分析等功能。
3.java中配置文件位置和读取
1.在同一个包里
在这里我要读取config.properties里面的元素
代码截屏:
效果图:
源码:
InputStream in = demo2.class.getResourceAsStream("config.properties");
Properties p = new Properties();
// Properties加载文件所对应的流
p.load(in);
System.out.println(p.getProperty ("driver"));
System.out.println(p.getProperty("url"));
2.根目录
代码截屏,效果图:
源码:
InputStream in = demo2.class.getResourceAsStream("/config.properties");
Properties p = new Properties();
// Properties加载文件所对应的流
p.load(in);
System.out.println(p.getProperty ("driver"));
System.out.println(p.getProperty("url"));
3.web-inf安全路径
代码截屏,效果图:
源码:
package com.lz.parse;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 3.web-inf安全路径
*/
@WebServlet("/z")
public class z extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
InputStream in = request.getServletContext().getResourceAsStream("/WEB-INF/config.properties");
Properties p = new Properties();
// Properties加载文件所对应的流
p.load(in);
System.out.println(p.getProperty ("driver"));
System.out.println(p.getProperty("url"));
}
}
二.demo4j的使用
1.selectNodes
代码截屏,效果图:
2.selectStringNodes
代码,效果图:
3.attributeValus
代码,效果图:
4.getText
源码:
package com.lz.parse;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Properties;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
public class demo3 {
public static void main(String[] args) throws Exception {
// 1.selectNodes 获取所有节点
InputStream in = demo3 .class.getResourceAsStream("students.xml");
SAXReader sr=new SAXReader();
Document doc = sr.read(in);
List<Element> stu = doc.selectNodes("/students/student");
for (Element element : stu) {
// System.out.println(element.asXML());
// System.out.println("-----------------分割线------------");
// 2.selectStringNodes 获得单个节点
Element name = (Element) element.selectSingleNode("name");
// System.out.println("name标签:"+name.asXML());
// 3.getText 获取某个便签内容
// System.out.println(name.getText());
// 4.attributeValus 获取某个标签属性
System.out.println(element.attributeValue("sid"));
}
}
}
5.实例:
源码:
package com.lz.parse;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Properties;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
public class demo4 {
public static void main(String[] args) throws Exception {
/** XPath解析
* 实例 获取id=002 的学生
*/
InputStream in = demo3 .class.getResourceAsStream("students.xml");
SAXReader sr=new SAXReader();
Document doc = sr.read(in);
List<Element> stu = doc.selectNodes("/students/student");
for (Element element : stu) {
Element name = (Element) doc.selectSingleNode("/students/student[@sid='s002']/name");
System.out.println(name.getText());
}
}
}