XML解析和写入

作者: Dylan666666 | 来源:发表于2019-07-05 14:50 被阅读2次

DOM解析准备工作

​​

​​

---------------------------------------------------->

DocumentBuilderFactory.newInstance创建对象

DocumentBuilder创建对象

Document  .parse("文件名”)进行xml解析

NodeList  .getElementsByTagName("节点名“)  找节点

for循环实现    ----->>>    Node    .item(i)  遍历获取各属性。

​​

常用节点类型

​​

解析xml节点名和节点值

----------------》》》》》

NodeList  .getChildNodes()  获取所有属性的子节点

通过 子节点实现  .getNodeType()    ==  Node.ELEMENT_NODE判断类型是否是空格,换行类型

子节点第一节点值输出方式:      childNodes.item(k).getFirstChild().getNodeValue()

直接输出子节点内所有值方式:  childNodes.item(k).getTextContent()

​​

SAX解析XML

步骤:

​​

​​

​​

------------------》》》》》》

​​

----------------》》》》》》

​​

----------------》》》》》》

使用SAX解析将XML的内容和结果保存到JAVA中

=====》》》》创建全局的value和book对象

=====》》》》用集合AarryList来存储book对象

​​

=====》》》》startElement开始后就创建新的book对象

​​

====》》》》endElement后将book存进集合中储存,再将book对象清空

====》》》》依次判断qName是否是需要的节点名称,进行book属性赋值

​​

====》》》》在characters中用value 接收所有的节点值,如果节点值不为空格或者换行就输出

​​

JDOM开始解析前的准备工作

====》》》》先导入JDOM的jar包

====》》》》创建SAXBuilder对象

====》》》》InputStream将xml文件写入

​​

====》》》》saxBuilder的build方法加载输入流

====》》》》用Document获取输入流

====》》》》Element的getRootElement()获取根节点

====》》》》用List接收根节点的子节点:.getChildren()

​​

====》》》》继续解析,遍历输出bookList里每个bool属性的位置(也就是第几本)

​​

====》》》》用List来接收每个属性的属性值  .getAttributes()

====》》》》遍历输出属性名和属性值

​​

====》》》》对属性的子节点进行遍历获取子节点名和子节点值  节点.getChildren()

​​

===》》  》》    JDOM 解析时乱码的处理

1. encoding改为UTF-8

2.====>>>> 调用InputStreamrReader的切换编码解析方法

​​

====》》》》 在JDOM中储存Book对象

====》》》》先创建集合为Book类型,并为全局私有

​​

====》》》》获取所有子节点信息以后,采用集合add()方法添加到总集合中,之后释放对象内存,便于下一次循环时使用。

​​

====》》》》 关于JDOM使用过程中JAR包的引用(导出)

①先在本project中创建一个folder文件,然后把jar包放在该folder里面

②然后再该project中buid path --->>>  configure build path中

③选择右方的的Add JARS  ,选择该jar包并ok

应用DOM4J解析节点的属性

====》》》》 如JDOM解析一样导入相应的jar包

====》》》》创建SAXReader的对象

====》》》》通过该对象的read()方法加载xml文件,并用Document获取

====》》》》用Element的 .getRootElement()获取根节点

====》》》》再对象 .elementIterator()获取迭代器

​​

====》》》》用while(it.hasNext())来进行遍历

====》》》》将it.next()转换为Element类型

====》》》》用集合来获得节点属性

====》》》》再用foreach输出节点名和节点值

​​

====》》》》用迭代器来接收属性节点的子节点  .elementIterator()

====》》》》再用while(itt.hasNext())进行遍历

====》》》》再用Element强制转换类型

====》》》》输出子节点名和子节点值

​​

四种解析方式的分析

​​

DOM解析

​​

SAX解析

​​

JDOM和DOM4J解析

​​

XML文件写入

DOM写入

====》》》》创建一个类便于获得DocumentBuilder对象

​​

====》》》》创建createXML()类来新建XML文件的各个节点

​​

====》》》》紧接着创建TransformerFactory对象  .newInstance()方法

====》》》》创建Transformer对象  .newTransformer()

====》》》》此对象调用transform()方法,new DOMSource(document),newStreamResult(new File(XML文件名))    创建此XML文件

​​

====》》》》让XML文件中节点换行  对象.setOutputProperty(OutputKeys.INDENT,"yes") 完成换行缩进

​​

====》》》》需要在创建节点前将standalone设置为true(设置后在XML文件中就不会显示了)

====》》》》向book节点创建子节点 用 book.appendChild(name) 添加子节点

====》》》》设置子节点的文本内容:    子节点.setTextContent(“文本内容”)

​​

SAX生成XML文件

====》》》》创建 ArrayList<>返回值类型的parseXML()方法,用于创建对象

​​

====》》》》创建createXML()方法,创建一个集合对象

​​

====》》》》用 SAXTransformerFactory 创建对象tff

====》》》》再用TransformerHandler 创建 handler 对象 tff.newTransformerHandler() 

​​

====》》》》通过handler对象 .getTransformer()  创建一个 Transformer对象

====》》》》通过该Transformer对象设置XML编码和换行缩进    tr.setOutputProperty(OutputKeys.属性,“设置的值”)

​​

在设置ENCODING和INDENT时要放在设置Result之前

====》》》》创建一个File对象  再new StreamResult 为 Result对象

====》》》》在创建File文件时需要判断,如果f不存在则要创建这个文件

====》》》》将handler对象与Result对象关联起来

​​

====》》》》利用handler对象进行XML文件的内容编写

====》》》》先startDocument()开始文本编辑

====》》》》用AttributesImple new 一个 attribute对象

====》》》》再.startElement开始加入标签,记得写完后要.endElement结束标签

====》》》》写完后关闭document

​​

====》》》》向bookstore里面添加属性内容,用过addAttribute添加    要开始和结束该标签

​​

====》》》》生成文本子节点,用foreach循环

====》》》》每添加不同的attr进入不同的节点的时候要先 .clear()  清空它的值

====》》》》然后用handler.characters来添加各个子节点属性的值

​​

​​

====》》》》由于不同属性下的子节点不同,所以增加每一个子节点判断机制

​​

RSS

简易信息聚合(也叫聚合内容)是一种RSS基于XML标准,在互联网上被广泛采用的内容包装和投递协议。RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的XML应用。

RSS目前广泛用于网上新闻频道,blog和wiki,主要的版本有0.91, 1.0, 2.0。使用RSS订阅能更快地获取信息,网站提供RSS输出,有利于让用户获取网站内容的最新更新。

​​

利用DOM4j实现写入RSS的xml文件

​​

====》》》》需要创建文件

​​

====》》》》用Element创建子节点  addElement()添加

====》》》》用.setText()设置子节点文本内容

====》》》》用OutputFormat.createPrettyPrint()设置文本的完美格式  将对象插入到writer中

​​

=====》》》》可以在OutputFormat对象中设置编码格式

​​

====》》》》关于转义字符,  .setEscapeText()  false  就不会自动转义了,可以直接添加‘<’ '>'一类字符了

​​

用JDOM生成XML根节点

====》》》》先Element一个根节点

====》》》》.setAttribute 为节点添加属性

====》》》》Document一个对象,XMLOutputter一个XML输出对象

​​

====》》》》.output()输出document对象和创建的文件对象

​​

====》》》》添加子节点和子节点内容

​​

====》》》》同样的,想要设置格式  用Format  的  .getCompactFormat()创建格式化对象

====》》》》用format对象设置想要格式化的内容  例如缩进:format.setIndent("")

​​

生成XML四种方式的对比

​​

相关文章

  • XML解析和写入

    DOM解析准备工作 ​​ ​​ -----------------------------------------...

  • iOS GDataXMLNode解析和写入XML文件

    最近工程中有对XML的解析和写入,便稍微了解了一点。SAX:sax解析是系统的解析,支持解析,但不支持写入,优点是...

  • Python编程练习7:利用Python读取操作xml文件

    接上次的xml学习内容,今天学习解析和修改XML文件 利用ET,很容易就可以完成XML文档构建,并写入保存为文件。...

  • Senior进阶 网络之数据解析之XML解析和JSON解析的用法

    Senior进阶 网络之数据解析之XML解析和JSON解析的用法 XML解析之SAX解析 XML解析之DOM解析 ...

  • 面试相关

    1.Json解析与XML解析 Gson解析和FastJson ,FastJson解析效率高 XML解析,SAX解析...

  • Xml文件的解析与写入

    前言 表白小可爱~~ 还没毕业的我,刚开始打算去大连华信实习,去了一天之后发现那里android部门并不招人,经过...

  • iOS 面试题集-05

    1、简述xml和json解析: 1>、xml数据解析有两种解析方式;DOM解析与SAX解析,DOM解析必须完成DO...

  • iOS解析XML

    2.0 XML解析 2.1 XML简单介绍 (1) XML:可扩展标记语言 (2) XML解析 2.2 XML解析...

  • iOS开发-XML解析

    一、 XML解析 1.1 XML简单介绍 (1) XML:可扩展标记语言 (2) XML解析 1.2 XML解析 ...

  • 3-XML解析

    3.0 XML解析 3.1 XML简单介绍 (1) XML:可扩展标记语言 (2) XML解析 3.2 XML解析...

网友评论

    本文标题:XML解析和写入

    本文链接:https://www.haomeiwen.com/subject/bxhehctx.html