XML解析
程序员文章站
2022-06-16 15:48:02
...
XML解析介绍
1.如何调用 .properties文件
Java中配置文件的三种配置位置及读取方式
1.同包下的资源文件读取
2.将所有的资源文件放在根目录下
*编译后所有的资源文件都会自动进web-inf下
3 WEB-INF(或其子目录下)
1.1:第一种方式:在同包的情况下获取
1.2:如果不是同包的情况下,而是放在根目录下,我们就只要 在 db.properties 加个斜杠 " / "
将路径 properitesDemo.class.getResourceAsStream("db.properties");
改为 properitesDemo.class.getResourceAsStream("/db.properties");
1.3:如果是在WEB-INF里,我们就要写个Servlet并且配置
public class properitesServlet extends HttpServlet {
private static final long serialVersionUID = 7973003110170094853L;
@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();//这里的代码是本类的ServletContext去获得的
InputStream in = context.getResourceAsStream("/WEB-INF/db.properties");//获取相对应的位置文件
Properties p = new Properties();//因为还是properites文件
p.load(in);
System.out.println(p.getProperty("uname"));
}
}
配置:
<servlet>
<servlet-name>proServlet</servlet-name>
<servlet-class>com.liwangwang.pares.properitesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>proServlet</servlet-name>
<url-pattern>/proServlet</url-pattern>
</servlet-mapping>
2.XML解析
properties文件的解析方式有java.util.properties这个类来完成
xml文件:应该由一个工具类来完成 以下是三种不同解析的工具类
jdk/jdom
sax解析 由上往下解析
dom4j解析 由外到内解析
dom4j解析我们需要下载它的包来完成 注意:导的所有方法都在dom4j下的
案例:建立一个student.xml,获得小王
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student sid="s001">
<name>小明</name>
</student
<student sid="s002">
<name>小芳</name>
</student>
<student sid='s003'>
<name>小王</name>
</student>
</students>
方法:
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());
// * 获取到所有的学生
List<Element> stuEles = doc.selectNodes("/students/student");
// * 遍历
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());//获得文本内容
}
}
如果我们是知道小王的id是’s003’的情况下
Element stuEles003 =(Element) doc.selectSingleNode("/students/student[@sid='s003']");//直接找到student的sid属性中为s003的student
System.out.println(stuEles003.selectSingleNode("name").getText());//打印student中的name元素里面的文本内容
}
xpath等同数据库的select语句
document.selectNodes(xpath);//查一组 document.selectSingleNode(xpath);//查单个