XML
XML的文档声明:
<?xml version="1.0" encoding="UTF-8"?>
XML的注释:
<!-- 这里面就是注释 -->
XML的标签:
<hello>元素体</hello> //元素体可写可不写,也可写其他标签
<hello id ="001" age = "17">元素体</hello>
<!--
< --- $lt; 小于
> --- > 大于
" --- " 双引号
' --- ' 单引号
& --- & 与
-->
<![CDATA[
正常java代码区
]]>
<!DOCTYPE beans SYSTEM "bean.dtd"> //beans表示根标签
Schema约束—常用
-
文档扩展名xsd
-
在自己需要编写的XML中引入Schema约束文件
-
命名空间
targetName = "http://www.baidu.com/abc"
//常用别名
xml:a="http://www.baidu.com/abc" //根标签下
<a:table></a:table>
XML解析方式和解析开发包
-
解析方式
- DOM:要求解析器把整个xml文件装载到内存,解析成一个document对象
- 优点:元素与元素间保留结构关系,故可增删查改
- 缺点:XML文档过大,可能出现内存溢出
- SAX:逐行扫描文档,一边扫描一遍解析。并以事件驱动的方式进行解析
- 优点:处理速度快,可处理大文件
- 缺点:只能读,逐行读取后释放资源
- DOM:要求解析器把整个xml文件装载到内存,解析成一个document对象
-
解析开发包
-
什么是Dom4J?
Dom4j是一个简单、灵活的开源库,dom4j使用接口和抽象基类,Dom4j的API相对要复杂一些但比JDOM更好的灵活性。 Dom4j是完美支持Xpath,具有性能优异、功能强大和极易使用的特点。采用的Dom4j需下载dom4j相应的jar文件 -
使用DOM4j解析XML包
1. 把整个要解析的XML文件加载到内存
2. 获取Document对象—read(File file)
3. 获取根标签—beans,若根标签有属性用attributeValue(属性名)获取
4. 获取根标签的子标签List集合,并遍历集合
5. 输出属性后又遍历其子标签
-
//1.把整个要解析的XML文件加载到内存
SAXReader reader = new SAXReader();
//2.获取Document对象
Document document = reader.read("beans.xml");
//3.获取根标签---beans
Element rootElement = document.getRootElement(); //若根标签有属性用attributeValue(属性名)获取
//4.获取根标签的子标签
List<Element> rootSonElements = rootElement.elements();
//5.遍历根标签的子标签集合
for (Element rootSonElement : rootSonElements) {
//6.获取子标签bean的属性
String beanId = rootSonElement.attributeValue("id");
String beanClassName = rootSonElement.attributeValue("className");
//7.打印子标签bean的属性
System.out.println(beanId+"->"+beanClassName);
//8.获取bean标签的子标签
List<Element> beanSonElements = rootSonElement.elements();
//9.遍历bean子标签集合
for (Element beanSonElement : beanSonElements) {
//10.获取子标签property的属性
String propertyName = beanSonElement.attributeValue("name");
String propertyValue = beanSonElement.attributeValue("value");
System.out.println(propertyName+"--->"+propertyValue);
}
}
beans.xml文件内容
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<bean id="001" className="cn.itcast.demo.User">
<property name="username" value="jack"></property>
<property name="password" value="123"></property>
</bean>
<bean id="002" className="cn.itcast.demo.Admin">
<property name="username" value="admin"></property>
<property name="password" value="123321"></property>
</bean>
</beans>
运行结果
001->cn.itcast.demo.User
username--->jack
password--->123
002->cn.itcast.demo.Admin
username--->admin
password--->123321