XML解析

    xiaoxiao2025-08-03  22

    标题

    概念Java中配置文件的三种配置位置及读取方式XML解析总结xml配置文件和properties配置文件的区别

    概念

    Document Object Model(文档对象模型) 将HTML或XML在内存中解析成一棵树(将XML文本读入到内存,形成一棵树)。 对节点进行CRUD操作。 树有节点的概念(Node) 节点类型 文档节点 元素节点 属性节点 文本节点 注释节点

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

    1.1 XML和*.properties(属性文件) 1.2 存放位置 1.2.1 src根目录下 Xxx.class.getResourceAsStream("/config.properties"); 1.2.2 与读取配置文件的类在同一包 Xxx.class.getResourceAsStream("config2.properties"); 1.2.3 WEB-INF(或其子目录下) ServletContext application = this.getServletContext(); InputStream is = application.getResourceAsStream("/WEB-INF/config3.properties");

    XML解析

    properties文件的解析方式有java.util.properties这个类来完成 xml文件:应该有一个工具类来完成 jdk/jdom sax解析 由上往下解析 dom4j解析 由外到内解析

    首先这是我的xml文件 我要通过dom4j+xpath解析xml文件,首先我们需要导入两个jar包dem4和jaxen(没有的可以去网上下载) 现在我们要获取到sid=s003的name值

    public static void main(String[] args) throws DocumentException { InputStream in = XmlParseDemo.class.getResourceAsStream("students.xml"); SAXReader reader = new SAXReader(); Document doc = reader.read(in); // System.out.println(doc.asXML());//输出整个xml文件的值 // 1、获取到所有的学生 List<Element> stules = doc.selectNodes("/students/student");//查student这一组节点 // 2、遍历 for (Element stu : stules) { if("s003".equals(stu.attributeValue("sid"))) { Node nameEle = stu.selectSingleNode("name");//查name单个节点 // System.out.println(nameEle.asXML());//打印<name>小王</name> System.out.println(nameEle.getText());//打印小王,这是第一种方法,通过遍历判断 } } // 做判断、如果sid=s003那么拿到小王 Node stuEleS003 = doc.selectSingleNode("/students/student[@sid='s003']"); System.out.println(stuEleS003.selectSingleNode("name").getText()); }

    两种方法都放出来了,所以应该打印了两个小王

    总结xml配置文件和properties配置文件的区别

    properties配置文件,风格是一个属性对应于一个值(key = value)这样的键值匹对模式。这样给我的感觉就是每一行properties配置文件的键值,对应着一次赋值。事实上,如果你试验一下,在前后两行properties文件中给同一个属性赋不同值,得到的结果往往是属性是后面赋值的值。properties的局限性在于,只能处理赋值。 xml配置文件则是一个树的结构,因此,可以处理各种各样定义好的情况,例如add一个属性之类的,这在properties配置文件中就没有办法实现了。

    最新回复(0)