菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
450
0

XML笔记

原创
05/13 14:22
阅读数 13455

xml是可扩展的标记语言

xml作用:

  • 用来保存数据,而且这些数据具有自我描述性
  • 作为项目或模块的配置文件
  • 作为网络传输数据的格式(现在JSON为主)

 

xml文件的声明

version表示xml的版本

encoding表示xml文件本身的编码

<?xml version="1.0" encoding="utf-8" ?>

  

<?xml version="1.0" encoding="utf-8" ?>
	
<books>     <!--表示多个图书信息-->
	<book sn="SN123456">	<!--表示一个图书信息-->
		<name>人生</name>	<!--表示书名-->
		<author>路遥</author>	<!--表示作者-->
		<price>40</price>	<!--表示图书价格-->
	</book>
</books>

  

xml元素指的是从开始标签直到结束标签的部分。元素可包含其他元素、文本或两者的混合,元素也可以拥有属性。

xml元素命名规则

  • 名称可以包含字母、数字以及其他的字符
  • 名称不能以数字或者标点符号开始
  • 名称不能以字符“xml”(或者XML、Xml)开始
  • 名称不能包含空格

 

xml属性:属性可以提供元素的额外信息,每个属性的值必须使用引号括起来(单引号和双引号都行)

 

xml标签对大小写敏感

 

xml文档必须有根元素:根元素是没有父标签的元素,而且根元素必须是唯一的

 

xml中的特殊字符

>  &gt;

<  &lt;

 

文本区域(CDATA区)

CDATA语法可以告诉xml解析器,CDATA里的文本内容,只是纯文本,不需要xml语法解析

CDATA格式:<![CDATA[内容]]>

 

xml解析技术

不管是html文件还是xml文件它们都是标记型文档,都可以使用w3c组织制定的dom技术来解析

 

 

 

 

dom4j解析技术

首先导入dom4j依赖

 

dom4j编程步骤:

  • 先加载xml文件创建Document对象
  • 通过Document对象拿到根元素对象
  • 通过根元素 .elements(标签名); 可以返回一个集合,这个集合里放着所有指定的标签名的元素对象
  • 找到你想要修改、删除的子元素,进行相应的操作
  • 保存到硬盘上

 

public class Book {
    private String sn;
    private String name;
    private Double price;
    private String author;

    public String getSn() {
        return sn;
    }

    public void setSn(String sn) {
        this.sn = sn;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }
}

  

public class Dom4jTest {
	@Test
	public void test01() throws Exception {
		//创建一个SAXReader输入流,去读取xml配置文件,生成Document
		SAXReader saxReader = new SAXReader();
		Document document = saxReader.read("src/books .xml");
		System.out.println(document);
	}
	
	/**
	 *读取books.xml 文件生成Book类
	 */
	 @Test
	 public void test02() {
	 	 //1、读取books.xml文件
	 	 SAXReader saxReader = new SAXReader();
	 	 //在Junit测试中,相对路径是从模块名开始算
	 	 Document document = saxReader.read("src/books.xml");
	 	 //2、通过Document对象获取根元素 
	 	 Element rootElement = document.getRootElement();
	 	 //3、通过根元素获取book标签对象
	 	 //element()和elements() 都是通过标签名查找子元素,后者返回是一个List
	 	 List<Element> books = rootElement.elements("book");
	 	 //4、遍历,处理每个book标签转换为Book类
	 	 for (Element book : books) {
	 	 	 //通过getText(); 获取标签中的文本内容
	 	 	 Element nameElement = book.element("name");
	 	 	 String nameText = nameElement.getText();
	 	 	 //直接获取指定标签名的文本内容
	 	 	 String authorText = book.elementText("author");
	 	 	 String priceText = book.elementText("price");
	 	 	 
	 	 	 String snValue  = book.attributeValue("sn");
	 	 	 
	 	 	 System.out.println(new Book(snValue, nameText, Double.parseDouble(priceText), authorText));
	 	 }
	 }

}

  

 

相关热门文章

发表评论

0/200
450 点赞
0 评论
收藏
为你推荐 换一批