赞
踩
XML的全称为(EXtensible Markup Language),是一门可拓展的标记语言
万维网联盟(W3C)标准 HTML XML 制定web标准
<!--用XML代表学生-->
<!--用属性表示对标签的说明-->
<lzpstudent jwid="1">
<name>张三</name>
<age>18</age>
</lzpstudent>
<!--
注意:
1.标签由一对尖括号和合法标识符组成
2.标签必须成对出现
3.特殊的标签可以不成对,但是必须结束标记 比如:<jwimg/>
4.标签中可以定义属性,属性和标签名空格隔开,属性值必须用引号引起来,属性只会出现在开始标签中
5.标签需要正确的嵌套
-->
虽然要求多但是每次都一样
XML文件的后缀名为:.xml
文档生命必须是第一行第一列
<?xml version="1.0" encoding="UTF-8" standalone="yes"
version:该属性是必须存在的
encoding:该属性不是必须的
standalone:该属性不是必须的,描述xml文件是否依赖其他的xml文件,取值为yes/no
必须存在一个根标签,有且只能有一个
XML文件中可以定义注释信息
XML文件中可以存在以下特殊字符
另外表示特殊字符方式
ML文件中可以存在CDATA区
<![CDATA[这里内容xml文件解析]]>
<?xml version="1.0" ecoding="UTF-8" ?> <!--注释的内容--> <!--本xml文件用来描述多个学生信息--> <students> <lzpstudent lzpId="1"> <name>张三</name> <age>18</age> <info><学生>其&它'特殊'"符号"</info> <message>学生<![CDATA[我的内容体]]></message> </lzpstudent> <lzpstudent lzpId="2"> <![CDATA[内容]]> <name>李四</name> <age>20</age> </lzpstudent> </students>
XML作为了配置文件(java读取这个内容)
XML解析就是从xml中获取到数据
解析的思想:—重点
DOM(Document Object Model)文档对象模型:就是把文档的各个组成部分看成对应的对象。
会把xml文件全部加载到内存,在内存中形成一个 树形结构,再获取对应的值。
常见xml解析工具很多:
实现解析----》java导入包外部包
<?xml version="1.0" ecoding="UTF-8" ?> <!--注释的内容--> <!--本XML文件用来描述多个学生信息--> <students> <!--第一个学生信息--> <student id="1"> <name>张三</name> <age>23</age> </student> <!--第二个学生信息--> <student id="2"> <name>李四</name> <age>24</age> </student> </students>
//上边是已经准备好的student.xml文件 public class Student { private String id; private String name; private int age; public Student(){} public Student(String id,String name,int age) { this.id=id; this.name=name; this.age=age; } //set和get方法 public void setId(String id){this.id=id;} public void setName(String name){this.name=name;} public void setAge(int age){this.age=age;} public String getId(){return id;} public String getName(){return name;} public int getAge(){return age;} //重写toString方法 @Override public String toString() { return "student{"+"id='"+id+'\''+ ",name='"+name+'\''+",age='"+age+'\''+'}' } }
获取一个解析器对象
SAXReader saxReader = new SAXReader();
利用解析器把xml文件加载(read())到内存中,返回一个文档对象
获取根标签getRootElement();
elements():可以获取调用者所有的字标签,会把这些字标签放到一个集合中返回
elements(“标签名”):可以获取调用者所有的制定的子标签,会把这些标签放到一个集合中并返回
element.element(“标签的名字”) 获取指定的标签内容
element.attribute(“属性的名字”) 获取指定的属性内容
element.getText() 获取标签的内容
import org.dom4j.Attribute; // 获取Attribute属性值 import org.dom4j.Document; // 处理xml文件 如读取 import org.dom4j.DocumentException; // 文档异常处理 import org.dom4j.Element; // 获取元素 import org.dom4j.io.SAXReader; // 解析xml数据 import java.io.File; import java.util.ArrayList; import java.util.List; public class jwXmlparse { public static void main(String[] orgs) throws DocumentException { //1.获取一个解析器对象 SAXReader saxReader = new SAXReader(); //2.利用解析器把xml文件加载(read())到内存中,并返回一个文档对象 Document jwdocument = saxReader.read(new File("jwstudent.xml")); //3.获取根标签getRootElement(); Element jwrootElement = jwdocument.getRootElement(); //4.elements():可以获取调用者所有的子标签,会把这些子标签放到一个集合中返回 //5.elements("标签名"):可以获取调用者所有的指定的子标签,会把这些子标签放到一个集合中并返回 List<Element> jwstus = jwrootElement.element("student"); System.out.println(jwstus.size());//查看学生数量 //6.创建集合,存放内容 ArrayList<student> jwlist = new ArrayList<>(); //遍历所有的学生 for(Element jwelement:jwstus) { //得到了每一个学生标签 //先获取便签id的属性值 //7.element.attribute(“属性的名字”) 获取指定的属性内容 Attribute attribute = jwelement.attribute("id");//获取属性的名字和值 //获取属性的值getValue(); String id = attribute.getValue(); //再获取学生的name标签值 //获取标签下的(student标签下的name标签) API element(标签的名字) Element nameElement = jwelement.element("name"); //获取这个标签的标签体内容getText(); String name = nameElement.getText(); //获取age标签的内容 //获取标签下的标签(student标签下的name标签) API element(标签的名字) Element ageElement = jwelement.element("age"); //getText()获取这个标签的标签体内容 String age = ageElement.getText(); //将获取到的数据封装到集合中去 student s = new student(id,name,Intteger.parseInt(age)); jwlist.add(s); } } }
注:其他的都是大同小异 套用此模板进行解析
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。