本帖最后由 huangtiandi 于 2019-2-24 13:50 编辑
说明:
本文只讲解xml在java中使用,概念性的东西比较少,在java中的应用例子较多,适合有一定xml基础的人群
xml简介
XML 不会做任何事情。XML 被设计用来结构化、存储以及传输信息,也就是单个XML本身是没有功能的,是
必须被其它东西使用才有意义
XML 仅仅是纯文本,任何有能力处理纯文本的软件都可以处理 XML
xml的基本书写
1 需要注意的是大于号和小于号以及&(与符号)都不能直接使用
小于号用(<)代替 大于号用(>)代替 &用 (&) 代替,他们后面都有分号
2 属性值必须要用双引号包围
注:下面的 呵呵< </孙元素> 呵呵后面的小于号应该用<代替
[mw_shl_code=xml,true]<?xml version="1.0" encoding="UTF-8"?>
<!-- 上面必须放在第一行,encoding是编码格式,尽量使用UTF-8 -->
<根元素 属性="属性值">
<子元素1>元素值</子元素1>
<子元素2>
<孙元素>呵呵<</孙元素>
</子元素2>
</根元素>
[/mw_shl_code]
java读取xml数值
java读取xml需要用到dom4j这个第三方包
使用的API也是对应dom4j里的,要想深入了解,可以找到dom4j的官方文档
dom4j的教程 https://www.cnblogs.com/sharpest/p/7877501.html
一个简单的xml文件
[mw_shl_code=xml,true]<?xml version="1.0" encoding="UTF-8"?>
<stus>
<!-- 给标签加属性 -->
<stu id="100">
<name>呵呵<</name>
<age>10</age>
</stu>
<stu id="200">
<name>哈哈</name>
<age>11</age>
</stu>
</stus>
[/mw_shl_code]
使用java读取xml的数值
[mw_shl_code=java,true] public static void main(String[] args) throws Exception
{
//创建(Simple aip for xml)读取对象
SAXReader reader1=new SAXReader();
//指定要解析的xml在哪,注意填对路径,返回的是一个Document对象
//这个Document是dom4j包里的,不要导错了包
Document document1=reader1.read(new File("src/XML_main/NewFile.xml"));
//获取xml绝对路径
System.out.println("绝对路径=="+document1.getName());
//获取根元素对象
Element rootElement=document1.getRootElement();
//获取根元素的名称
System.out.println("根元素=="+rootElement.getName());
//获取子元素对象,如果想获取孙元素对象,,在element后面再加一个element("")
//需要指定子元素对象的名称才能取到
System.out.println("子元素=="+rootElement.element("stu"));
System.out.println("==========================");
//获取所有子元素,但不包含孙元素,也就是只获取第1层
List<Element> elements=rootElement.elements();
for(Element element:elements)
{
//但是可以根据子元素对象获取孙元素对象
System.out.println(element.element("name"));
//获取孙元素的元素值
System.out.println("元素值=="+element.element("name").getText());
//获取属性值
System.out.println("属性值=="+element.attribute("id").getValue());
}
}
[/mw_shl_code]
XPath的使用
XPath能够快速定位到元素,而不需要向上面一样,假如我们只想读取孙元素的数据
那么我们需要先获取父元素,再获取子元素,然后才能获取到孙元素,XPath便能快速定位
需要添加dom4j的lib文件下的jaxen-1.1-beta-6.jar包
XPath主要需要学习的就是表达式,这里只做简单的使用
/stus/stu /表示从根节点往下取
//stu //表示取出所有叫stu元素的,不考虑位置,但是要使用selectNodes才能取得所有元素
XPath教程 http://www.runoob.com/xpath/xpath-tutorial.html
[mw_shl_code=java,true] public static void main(String[] args) throws Exception
{
//创建(Simple aip for xml)读取对象
SAXReader reader1=new SAXReader();
//指定要解析的xml
Document document1=reader1.read(new File("src/XML_main/NewFile.xml"));
//获取根元素
Element rootElement=document1.getRootElement();
//Xpath,能快速定位到节点,但是还是需要添加jar包,在domj4的lib里jaxen-1.1-beta-6.jar
//找到元素后返回的是Node类型,我们可以强转成Element,节点就是元素
//selectSingleNode是只取第一个节点(元素)
// /stus/stu /表示从根节点往下取
// //stu //表示取出所有叫stu元素的,不考虑位置,但是要使用selectNodes才能取得所有元素
Element nameElement=(Element) rootElement.selectSingleNode("//name");
System.out.println(nameElement.getText());
System.out.println("===============");
//获取所有节点(元素)
List<Element> list1=rootElement.selectNodes("//name");
for(Element element:list1)
{
System.out.println(element.getText());
}
}
[/mw_shl_code]
未完待续
摘自我的原文 https://blog.csdn.net/yzj17025693/article/details/87812877
|
|