【XML】解析

    xiaoxiao2024-11-14  93

    文章目录

    1. Java中配置文件的三种配置位置及读取方式2. XML的作用3. dom4j+xpath解析xml文件

    1. Java中配置文件的三种配置位置及读取方式

    方法一 这是需要读取出来的代码 读取后【这种方法不常用】

    1.1 XML和*.properties(属性文件) 存放位置: 它在src根目录下

    Xxx.class.getResourceAsStream("/config.properties");

    与读取配置文件的类在同一包

    Xxx.class.getResourceAsStream("config2.properties"); package parse; import java.io.IOException; import java.io.InputStream; import java.util.Properties; /** * 各个位置下的资源文件(properties、xml结尾的文件)的读取方式 * 1、同包下的资源文件读取 * 2、将所有的资源文件放在根目录下 * 编译后所有的资源文件都会自动进WEB-INF下【一般开发用这种】 * 3、直接将资源文件放到web-inf下 * @author zhouyanpeng * 第一种方法 很少用 */ public class PropertiesDemo { public static void main(String[] args) throws IOException { //将当前类同包下的db.properties资源文件转换成输入流 //斜杠代表根目录 InputStream in = PropertiesDemo.class.getResourceAsStream("/db.properties"); Properties p = new Properties(); p.load(in); //未获取到则返回null System.out.println(p.getProperty("uname")); System.out.println(p.getProperty("upass")); } }

    WEB-INF(或其子目录下)

    ServletContext application = this.getServletContext(); InputStream is = application.getResourceAsStream("/WEB-INF/config3.properties");

    这种方法必须写Servlet并配置才行

    public class PropertiesServlet extends HttpServlet{ private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext context = req.getServletContext(); InputStream in = context.getResourceAsStream("/WEB-INF/db.properties"); Properties p = new Properties(); p.load(in); System.out.println(p.getProperty("uname")); System.out.println(p.getProperty("upass")); } }

    配置

    tomcat服务器文件夹含义

    //bin 放命令的 //config 放tomcat服务配置的 //work 临时文件 //webapp 发布项目的目录 //web-inf 安全目录 含义:不能被外界访问 //log 日志

    资源文件 凡是以propertiesj或以xml结尾的都是资源文件【xml同时也是配置文件】,或一切静态文件都是资源文件。 常见的资源文件 .properties和.xml 静态资源文件 css、js、html、图片、视频 properties文件的解析方式有java.util.properties这个类来完成 xml文件:应该有一个工具类来完成 jdk/jdom sax解析 由上往下解析 dom4j解析 由外到内解析 dom节点

    <html> <body> <div id="head"></div> <div id="content">< xxxx <div></div> /div> </body> </html><http></http><body></body><div></div>这些就是节点了

    2. XML的作用

    程序之间的数据传输通讯 程序之间的数据传输通讯 PHP语言 <- 快递100 <- Java语言 配置文件 配置文件config.xml 存储数据,充当小型数据库 存储数据,充当小型数据库 规范数据格式 规范数据格式,是数据具有结构性,易读易处理 是数据具有结构性,易读易处理

    3. dom4j+xpath解析xml文件

    xpath等同数据库的select语句

    document.selectNodes(xpath);//查一组 document.selectSingleNode(xpath);//查单个

    xml可以作为数据传输 每一个接口传输的xml节点及节点内容都不相同,那么对应的解析方式是不是应该写很多个呢? 思考一个xml解析方法解析多种格式的文件 反向思考,将数据库查出来的任意类型的集合转成对应的xml格式字符串。 DOM由节点组成 Node 元素节点 属性节点 文本节点

    xpath / 定位路径 在系统中建一个文件叫document/students/student/sid|name @ 属性 students.xml

    获取小王 方法一

    public class XmlParseDemo { public static void main(String[] args) throws DocumentException { InputStream in = XmlParseDemo.class.getResourceAsStream("students.xml"); SAXReader saxReader = new SAXReader(); Document doc = saxReader.read(in); // System.out.println(doc.asXML()); // 1.获取到所有的学生 // List<Element> stuEles = doc.selectNodes("/students/student"); // 2.遍历 // for (Element stuEle : stuEles) { // if("s003".equals(stuEle.attributeValue("sid"))) { // Element nameEle = (Element)stuEle.selectSingleNode("name"); // System.out.println(nameEle.asXML()); // System.out.println(nameEle.getText()); // } // } // 3.做判断、如果sid=s003那么拿到小王 Element stuEleS003 = (Element)doc.selectSingleNode("students/student[@sid='s003']"); System.out.println(stuEleS003.selectSingleNode("name").getText()); } }

    方法二

    InputStream in = XmlParseDemo.class.getResourceAsStream("students.xml"); SAXReader saxReader = new SAXReader(); Document doc = saxReader.read(in); Element stuEleS003 = (Element)doc.selectSingleNode("students/student[@sid='s003']"); System.out.println(stuEleS003.selectSingleNode("name").getText());

    这种较为简单,但要明确知道文件位置 想要了解更多,联系博主。

    最新回复(0)