java 解析标记语言_JavaSE基础之 XML(可扩展标记语言)

一.知识点

* xml 数据

* xml 是一种国际通用的数据格式

* 最大优点 跨平台

*

* xml 是一种 标记型语言 标签<>> 标签都是 成对 出现

*

* 了解xml数据格式

* 如何利用java代码生成xml数据

* 如何使用xml数据(解析)

*       解析: 将数据提取出来的过程

*

* jar包: dom4j-1.6.1.jar

*     如何导入jar包:

*          1.先创建一个文件夹 用于存放jar包

*          2.在工程根目录下创建libs文件夹 点击根目录右键 new-->Directory-->取名libs

*          3.将jar包复制粘贴到libs 文件夹中

*          4.选中jar包右键-->Add as library —>确定(出现小三角则成功)

*创建XML文档

//第一步 创建document(文档)对象

Document document = DocumentHelper.createDocument();

//第二步 创建根标签 所有标签的类型都是Element

Element root = DocumentHelper.createElement("root");

//将根标签放入document对象

document.setRootElement(root);

//可以为标签添加属性

//参数1 属性名 参数2 属性值

root.addAttribute("desc","这是一个根标签");

//创建子标签

Element traffic =root.addElement("traffic");

//在子标签中再添加子标签

Element brand = traffic.addElement("brand");

//为子标签添加内容

brand.setText("lambo");

Element price = traffic.addElement("price");

price.setText("600万元");

Element color = traffic.addElement("color");

color.setText("宝石蓝");

/*--------------------生成xml文件-------------------------*/

//首先创建一个文件

//文件路径一定确保正确

File file = new File("xml_file/newXml.xml");

try {

FileOutputStream fos = new FileOutputStream(file);

//对生成的xml文件进行处理

OutputFormat format = new OutputFormat();

//换行

format.setNewlines(true);

//设置编码格式

format.setEncoding("utf-8");

//设置缩进 两个tab

format.setIndent(" ");

//!!!最最最核心代码 编写file

XMLWriter writer = new XMLWriter(fos,format);

writer.write(document);

//注意最后的操作 关闭流

writer.close();

fos.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

*XML文档解析

* 解析:

* 将某种数据格式里面的内容提取出来

* 转化为我们可以使用的格式

//首先创建一个集合(或Map) 存放解析好的对象(数据)

List books = new ArrayList<>();

//找到要解析的文件

File file = new File("xml_file/newXml3.xml");

//SAX解析方式 创建解析用的对象

SAXReader reader =new SAXReader();

try {

//读文件获取document对象

Document document = reader.read(file);

//解析原则 从外向里一层一层解析

//获取根标签

Element library = document.getRootElement();

//getName 是获取标签的名字

//System.out.println("根标签的名字是: " + library.getName());

//attribute("desc").getData() 获取标签里的属性内容

//System.out.println(library.attribute("desc").getData());

//迭代器遍历!!!!

//创建迭代器对象 都是Element类型的对象

IteratorlibraryIterator = library.elementIterator();

//while循环

while (libraryIterator.hasNext()) {

//用于存放遍历以后的结果

Book book = new Book();

//获取子标签

Element bookElement =libraryIterator.next();

//获取子标签的名字

//System.out.println(bookElement.getName());

//获取子标签里面属性内容 key值

//System.out.println(bookElement.attribute("type").getData());

//创建子标签的迭代器对象

IteratorbookIterator = bookElement.elementIterator();

while (bookIterator.hasNext()) {

//获取孙子标签

Element element = bookIterator.next();

// System.out.println(element.getName());

// System.out.println(element.getData());

//判断子标签的名字

if (element.getName().equals("name")){

//获取对应子标签的内容

String name = element.getText();

// System.out.println(name);

//将内容设置给book对象进行储存

book.setName(name);

}

if (element.getName().equals("kind")){

String kind = element.getText();

book.setKind(kind);

}

if (element.getName().equals("price")){

String price = element.getText();

book.setPrice(price);

}

if (element.getName().equals("num")){

String num = element.getText();

book.setNum(num);

}

}

books.add(book);

}

} catch (DocumentException e) {

e.printStackTrace();

}

for (Book book : books) {

System.out.println(book);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值