XML解析中的dom4j以及properties文件读取

    xiaoxiao2025-09-02  1

    properties文件读取

    第一种:

    properties文件的解析方式有java.util.properties这个类来完成 根据存放位置


    1、根目录下 Xxx.class.getResourceAsStream("/config.properties"); 2、与读取配置文件的类在同一包 Xxx.class.getResourceAsStream("config2.properties"); 3WEB-INF(或其子目录下) ServletContext application = this.getServletContext(); InputStream is = application.getResourceAsStream("/WEB-INF/config3.properties"); 为什么放在WEB-INF的文件必须要全局上下文才能取到呢? 原因:WEB-INF是一个安全目录,也就是不能被外界访问的一个目录,只能通过内部配置web.xml通过servlet来访问

    当我的文件在我的根目录下(Source Folder)

    public static void main(String[] args) throws IOException { //将当前同包下的db.properties资源文件转换成输入流 // 斜杆/ 代表根目录 InputStream in = PropertiesDemo.class.getResourceAsStream("/db.properties"); Properties p=new Properties(); p.load(in); System.out.println(p.getProperty("uname")); System.out.println(p.getProperty("upass")); }

    第二种方式:

    如果不是同包的情况下,而是放在根目录下,我们就只要 在 db.properties 加个斜杠 " / " 就好了

    public class proServlet extends HttpServlet { @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");//获取到WEB_INF的文件 Properties p=new Properties(); p.load(in); System.out.println(p.getProperty("uname"));//打印到控制台 System.out.println(p.getProperty("upass")); } }

    什么叫做XML解析?

    1、XML解析——Java中XML的四种解析方式 XML是一种通用的数据交换格式,它的平台无关性、语言无关性、系统无关性、给数据集成与交互带来了极大的方便。XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已。

    XML的解析方式分为四种:1、DOM解析;2、SAX解析;3、JDOM解析;4、DOM4J解析。 其中前两种属于基础方法,是官方提供的平台无关的解析方式;后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于java平台。

    2、比较总结XML中几种解析方式   DOM4J性能最好,连Sun的JAXM也在用DOM4J。目前许多开源项目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J(由外到内解析)。

    dom4j 解析xml文件

    DOM 是这样规定的: 整个文档是一个文档节点 每个 XML 标签是一个元素节点 包含在 XML 元素中的文本是文本节点 每一个 XML 属性是一个属性节点 注释属于注释节点

    案例:建立一个student.xml,获得小王

    然后建立一个方法来获得我们需要的

    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()); }

    然后就可以得到小王

    今天就更新到这里 喜欢的可以关注我 不定时更新

    最新回复(0)