学习日志——2019/08/30

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44757417/article/details/100165354

XML

CDATA区

非法字符
<?xml version="1.0" encoding="UTF-8"?>
<a>
	<!--这是俩个学生一个叫张三,一个叫李四 -->
	<xs id="1">
		<name>李四</name>
		<age>19</age>
	</xs>
	<xs>
		<name id="2">张三< </name>
		<age>20</age>
	</xs>
</a>
  • " <"是非法字符会报错

严格地讲,在 XML 中仅有字符 “<“和”&” 是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯。

 <   &lt;
 &   &amp;

如果某段字符串里面有过多的字符, 并且里面包含了类似标签或者关键字的这种文字,不想让xml的解析器去解析。 那么可以使用CDATA来!

<des>
<![CDATA[<a href="http://www.baidu.com"> 百度</a>]]>
</des>

不过这个CDATA 一般比较少看到。 通常在服务器给客户端返回数据的时候。

XML解析

其实就是获取元素里面的字符数据或者属性数据。

  • XML的解析方式有很多种,但是通常有两种
    • DOM
    • SAX
      在这里插入图片描述
针对两种解析方式的API

一些组织或者公司, 针对以上两种解析方式, 给出的解决方案有哪些?

	jaxp  sun公司。 比较繁琐

	jdom
	dom4j  使用比较广泛
  • Dom4j 基本用法

    element.element(“stu”) : 返回该元素下的第一个stu元素
    element.elements(); 返回该元素下的所有子元素。

  1. 创建SaxReader对象

  2. 指定解析的xml

  3. 获取根元素。

  4. 根据根元素获取子元素或者下面的子孙元素


		try {
			//1. 创建sax读取对象
			SAXReader reader = new SAXReader(); //jdbc -- classloader
			//2. 指定解析的xml源
			Document  document  = reader.read(new File("src/xml/stus.xml"));
			
			//3. 得到元素、
			//得到根元素
			Element rootElement= document.getRootElement();
			
			//获取根元素下面的子元素 age
		//rootElement.element("age") 
			//System.out.println(rootElement.element("stu").element("age").getText());


			//获取根元素下面的所有子元素 。 stu元素
			List<Element> elements = rootElement.elements();
			//遍历所有的stu元素
			for (Element element : elements) {
				//获取stu元素下面的name元素
				String name = element.element("name").getText();
				String age = element.element("age").getText();
				String address = element.element("address").getText();
				System.out.println("name="+name+"==age+"+age+"==address="+address);
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}

猜你喜欢

转载自blog.csdn.net/weixin_44757417/article/details/100165354