XML的解析和写入

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四种方式的对比

​​

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值