2019-7-11 上课总结 XML文件里的DOM解析

一、XML文件
ML 指可扩展标记语言(EXtensible Markup Language)
XML 是一种标记语言,很类似 HTML
XML 的设计宗旨是传输存储数据,而非显示数据
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准

XML 与 HTML 的主要差异
XML 不是 HTML 的替代。
XML 和 HTML 为不同的目的而设计:
XML 被设计为传输和存储数据,其焦点是数据的内容。
HTML 被设计用来显示数据,其焦点是数据的外观。
HTML 旨在显示信息,而 XML 旨在传输信息。

XML里的标记对都叫node 节点
element 元素

常用的节点类型就三种
         getNodeName()         getNodeValue
Element     element name      null
Attr        属性名称    属性值
Text        #text         节点值

二、使用
第一种:DOM解析xml的步骤:
准备工作:
1.// 获得解析器工厂对象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
2. // 通过解析器工厂对象新建一个文档解析器
DocumentBuilder builder = factory.newDocumentBuilder();
3.// 通过解析器解析xml文件,在内存中形成文档树(节点树)
// dom 适合于解析 xml 文件小,简单
Document doc = builder.parse(fileName);
4.// 根据标签名获得所有的 book 节点
NodeList nodeList = doc.getElementsByTagName(“book”);

解析过程:
5.遍历节点集合 获取每个节点元素
for (int i = 0; i < nodeList.getLength(); i++) {
Element element = (Element) nodeList.item(i);
获取节点的属性 element.getAttribute(属性名)
6.获取子节点的值
属性名称 = doc.getElementsByTagName(“title”).item(i).getFirstChild().getNodeValue();

第二种:.DOM创建XML文件步骤:
原理:
创建TransformerFactory类的对象
通过TransformerFactory创建Transformer对象
使用Transformer对象的transform()方法将DOM树转换为XML文件。
(该方法有两个参数,第一个参数为源数据,需要创建DOMSource对象并将Document加载到其中
;第二个参数为目的文件,即要生成的XML文件,需要创建StreamResult对象并指定目的文件)
1.// 获得解析器工厂对象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
2. // 通过解析器工厂对象新建一个文档解析器
DocumentBuilder builder = factory.newDocumentBuilder();
3.// 通过解析器创建一个新的文档对象
Document doc = builder.newDocument();
4.//设置xml版本号
doc.setXmlVersion(“1.0”);
5.增加节点/子节点 以及值
6.将节点添加到document
doc.appendChild(element);
7 //创建Xml文件转换器
TransformerFactory tranf = TransformerFactory.newInstance();
Transformer trans = tranf.newTransformer();
8//给文件转换器设置字符编码
trans.setOutputProperty(“encoding”, “utf-8”);
9//定义转换器输入对象
DOMSource source = new DOMSource(doc);
10//定义转换器输出对象
Result target = new StreamResult(目标XML文件);
trans.transform(source, target);

注意:standalone = no 表示dtd和schema的相关描述资料的提示 一般设置为true

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Neo-chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值