首先我们来介绍一下什么叫XML文档
XML中文翻译为扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输。
知道了这一点后,我们会开始想怎样来解析这一个XML文档,早期的解析工具有DOM SAX ,再到后来的jdom,现在我们来看一种更加好用也是企业里面经常用到的————-demo4j解析器
常见的XML文件
可以看见其结构跟我们的html文件是非常相似的不过在这里这些标签使我们自己定义的,这里我们有自己定义的根标签< students> 里面存放着我们定义各类子标签,比如有name sex标签,这些都是我们日后要解析的内容
我们下面要用的方法都可以在这个API下找到
我们用一个具体的代码来看看着XML文档解析器的具体使用,我们这里就是来解析上面那个文档,首先我们下载demo4j的jar,这里我们用maven项目的方式来导入,如果不清楚的话,可以去看我的这一篇文章
不过也可以去网上下载jar并导入使用,结果是一样。
public static void test1(){
//定义一个XML文档解析器
SAXReader sax = new SAXReader() ;
try {
//获取一个document对象
Document doc = sax.read(new FileInputStream("src/Students.xml"));
//获取XML文档的根元素
Element rootElement = doc.getRootElement();
//把根元素来里面的student标签放到List中去
List studentList = rootElement.elements("student");
//使用迭代器来输出这个集合
for (Iterator iterator = studentList.iterator(); iterator.hasNext();) {
Element element = (Element) iterator.next();
//获得子元素里面的属性值
String idcard = element.attributeValue("idcard");
System.out.println(idcard);
//获得这个子元素中的迭代器
Iterator iter = element.elementIterator();
//取出这些子元素的中的文本内容
while(iter.hasNext()){
Element el = (Element)iter.next();
String tagName = el.getName();
if(tagName.equals("name")){
System.out.println(el.getText());
}
if(tagName.equals("sex")){
System.out.println(el.getStringValue());
}
}
}
} catch (FileNotFoundException | DocumentException e) {
e.printStackTrace();
}
}
效果图
有了这个工具,解析XML文档就会变得简便,希望对你有帮助