博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XML文件解析
阅读量:4305 次
发布时间:2019-06-06

本文共 2746 字,大约阅读时间需要 9 分钟。

eclipse新建源文件的文件夹,编译后和src文件夹中放在一起

源文件

源文件的配置文件

测试文件

源文件的测试文件

一般用maven进行管理的时候就是这样

如果是小项目的话可能就src和resource这两个文件夹。

xml只能有一个根标签

相同类型对象定义同一个类型

核心内容就是xml

解析的方法有两种

1中是dom,所有的结点生成一个dom文档

2sax是一行一行的解析

dom的内存占用率大,sax占用的内存小

dom4j是一个jar包用于解析xml的

如果已经是有了一个xml文件进行解析想要获得值的话,还是要用的选择器啊。

1 package com.practice.tuhooo;  2 import java.util.List;  3 import org.dom4j.Document;  4 import org.dom4j.DocumentException;  5 import org.dom4j.Element;  6 import org.dom4j.io.SAXReader;  7   8 public class Xmlparse {  9  10     // 先获得DOM树 11     // Document在这里是dom4j里面的一个接口 12     public static Document getDoc(String url) throws DocumentException { 13  14         // 新建一个读取xml文件的java对象 15         SAXReader reader = new SAXReader(); 16         // 以url为参数调用read()方法获取对应的xml文档的对象 17         Document doc = reader.read(url); 18         return doc;        // 返回doc对象 19  20     } 21  22     public static void main(String[] args) throws DocumentException { 23  24         Document doc = getDoc("conf/person.xml");     // 获得Document对象 25         Element root = doc.getRootElement();  // 获得根结点 26         List
list = root.selectNodes("//age"); 27 // List
list = root.selectNodes("//class_/student/age"); 效果和上面的一样 28 System.out.println(list.size()); // 获得所有元素标签student的个数 29 30 for (Element i : list) { 31 System.out.println(i.getStringValue()); 32 } 33 } 34 35 }

 

1 
2
3
4
刘德华
5
26
6
7
8
梁朝伟
9
24
10
11
12
黄渤
13
23
14
15
16
刘老根
17
24
18
19

这里遇到了一个问题很奇怪,当用根节点获取student结点并采取两种不同的打印方式来获取内容的时候出现了这种情况

1 Element root = doc.getRootElement();  // 获得根结点  2 List
list = root.selectNodes("//student"); 3 // List
list = root.selectNodes("//class_/student/age"); 效果和上面的一样 4 System.out.println(list.size()); // 获得所有元素标签student的个数 5 6 for (Element i : list) { 7 System.out.println(i.getStringValue()); 8 }

 

 

1 Element root = doc.getRootElement();  // 获得根结点  2 List
list = root.selectNodes("//student"); 3 // List
list = root.selectNodes("//class_/student/age"); 效果和上面的一样 4 System.out.println(list.size()); // 获得所有元素标签student的个数 5 6 for (Element i : list) { 7 System.out.println(i.getText()); 8 }

如果像下图这样加"sdf"的话,用getText()就可以打印出这个字符串,getText()是用来获取标签里面的文本的,终于解释地通了。

转载于:https://www.cnblogs.com/tuhooo/p/6220950.html

你可能感兴趣的文章
10 Things You Need To Know About Cocoa Auto Layout
查看>>
一个异步网络请求的坑:关于NSURLConnection和NSRunLoopCommonModes
查看>>
iOS 如何放大按钮点击热区
查看>>
ios设备唯一标识获取策略
查看>>
获取推送通知的DeviceToken
查看>>
Could not find a storyboard named 'Main' in bundle NSBundle
查看>>
CocoaPods安装和使用教程
查看>>
Beginning Auto Layout Tutorial
查看>>
block使用小结、在arc中使用block、如何防止循环引用
查看>>
iPhone开发学习笔记002——Xib设计UITableViewCell然后动态加载
查看>>
iOS开发中遇到的问题整理 (一)
查看>>
Swift code into Object-C 出现 ***-swift have not found this file 的问题
查看>>
为什么你的App介绍写得像一坨翔?
查看>>
RTImageAssets插件--@3x可自动生成@2x图片
查看>>
iOS开发的一些奇巧淫技
查看>>
常浏览的博客和网站
查看>>
Xcode 工程文件打开不出来, cannot be opened because the project file cannot be parsed.
查看>>
iOS在Xcode6中怎么创建OC category文件
查看>>
5、JavaWeb学习之基础篇—标签(自定义&JSTL)
查看>>
8、JavaWEB学习之基础篇—文件上传&下载
查看>>