简介 目录 评价 推荐
  • 明月暖清风 2022-02-16

    SAX解析XML的速度比DOM的块,
    SAX的解析XML的解析器,需要重写startElement()开始解析的方法and endElemaent()方法 结束解析的方法and characters()方法
    重写charaters()方法时,String(byte[] bytes,int offset,int length)的构造方法进行数组的传递
    再去除解析时多余空格
    if(!value.trim().equals("")){
    System.out.println(value);
    }
    使用 SAX 解析 XML 文件的节点名和节点间文本
    startElement方法——String qName(第三个参数):节点名
    startElement方法——Attributes attributes(第四个参数):节点名的属性操作
    characters方法——char[] ch(第一个参数):xml整个文本内容,所以需截取想要的内容

    0赞 · 0采集
  • 明月暖清风 2022-02-16

    SAX方式解析xml步骤
    1.通过SAXParserFactory的静态newInstance()方法获取一个SAXParserFactory的对象。
    2.通过SAXParserFactory对象的newSAXParser()方法返回一个SAXParser类的对象。
    3.创建一个类继承DefaultHandler,重写其中的一些方法并创建类的实例.
    4.通过SAXParser类的Parse(Stringname,df)方法解析xml文件,参数Stringname为路径名,df为继承于DefaultHandler类的实例化对象,不需要定义变量存储返回的类型.
    SAX是按节点顺序进行解析,遇到xml的声明即开始解析,遇到最后一个节点的尾节点便结束解析,需要用户自己定义一个类继承于DefaultHandler类来解析,遇到开始标签节点便通过startElement开始解析节点,遇到结束标签节点便通过endElement结束解析,再遇到开始节点继续通过startElement解析,一直循环直到xml文件最后的结束标签节点.
    5.在继承于DefaultHandler这个类中需要重写父类的startElement()和endElement()方法,来进行开始节点与结束节点的解析,再重写startDocument()方法与endDocument()方法来标识解析的开始与结束.

    0赞 · 0采集
  • 明月暖清风 2022-02-16

    解析文件节点以及子节点的值
    1.先获取子节点,Node下有方法getChildNodes()来获取某个节点的子节点的集合,返回NodeList类型.
    NodeList childNodes=book.getChildNodes()//包含book节点所有的子节点,两个标签之间的所有内容都看成是子节点.
    2.通过childNodes的getLength()方法返回字点的个数(空格与换行字符看成为一个文本节点,标签与结束标签看成一个元素节点)
    3.通过NodeList的item(i)获取指定位置子节点的名称返回Node类型.再用Node类型的getNodeName()方法就可以获取节点名
    Node childnode=childNodes.item(i);
    String name=childnode.getNodeName();
    可以通过Node类的getNodeType()来区分文本类型的node以及元素类型的node,看当前Node类型是否与Node."节点类型英文全称"相同.
    if(childnode.getNodeType==Node.ELEMENT_NODE)
    {System.out.println(name)}
    4.不能直接通过Node的getNodeValue()来获取节点的值,因为元素节点的nodeValue的返回值为null而且标签之间的文本被看做是该标签的子节点.所以要用Node的getFirstChild()此时获取的子节点为文本节点,Text节点类型的nodeValue返回值为节点内容,再getNodeValue()。
    或者直接用Node的getTextContent()方法直接获取节点值。
    如果该Node节点还存在其他子节点并且有节点值<name><a>广州大学</a>华软学院</name>,那么用getFirstChild().getNodeValue()一样是null,因为获取的子节点仍然是element类型的
    如果用Node的getTextContent(),一样会把<a>元素节点当成是Content输出。

    0赞 · 0采集
  • 明月暖清风 2022-02-14

    获取xml文件内容的
    四种解析方式:DOM SAX DOM4J JDOM
    DOM、SAX :java 官方方式,不需要下载jar包
    DOM4J、JDOM :第三方,需要网上下载jar包
    DOM使用步骤:
    准备工作
    1、创建一个DocumentBuilderFactory的对象
    DocumentBuilderFactory dbf = DocumnetBuilderFactory.instance();
    2、创建一个DocumentBuilder的对象
    DocumentBuilder db = dbf.newDocumentBuilder();
    3、通过DocumentBuilder对象的parse方法加载xml文件到当前项目
    Document document = db.parse("*.xml");

    0赞 · 0采集
  • weixin_慕先生2150296 2022-02-14

    用xml来存储信息,然后使用特定的程序来进行进行可视化,让人们读懂。

    0赞 · 0采集
  • qq_慕移动2510484 2021-12-21

    暂时用不到,

    讲的个项目没啥关系

    0赞 · 0采集
  • Mk仔 2020-07-27

    四种解析方式:

    • DOM

    • SAX

    • DOM4J

    • JDOM

    0赞 · 0采集
  • Mk仔 2020-07-27

    解析XML文件的目的:

    获取节点名、节点值、属性名、属性值。

    截图
    0赞 · 0采集
  • Mk仔 2020-07-27

    XML文件例子

    注意:标签区分大小写。

    截图
    0赞 · 0采集
  • 慕侠0036582 2020-06-01

    node 节点有三种,

    element表示当前标签元素

    attr表示当前节点的属性值

    text 表示文本节点

    去除text节点的一个办法是

    0赞 · 0采集
  • 慕侠0036582 2020-06-01

    遍历XML文件的节点有两种方法:

    1. 在不清楚当前节点的属性个数时使用 node接受nodelist中的一个node然后用NamedNodeMap 接受当前节点的所有属性 并以Map形式返回

    0赞 · 0采集
  • 慕数据6008250 2020-04-24

    解析XML文件需要对象:

    DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();

    DocumentBuilder db=dbf.newDocumenbuilder();

    //解析XML文件

    db.parse(URI);

    0赞 · 0采集
  • wzx拥拥17396 2019-12-12
    java xml 1
    0赞 · 0采集
  • weibo_迟舟舟_Yee 2019-11-28

    推荐使用DOM4J

    截图
    0赞 · 0采集
  • weibo_迟舟舟_Yee 2019-11-28

    4中解析方式PK(整体)

    基础方法:DOM(平台无关的官方解析方式)、SAX(基于事件驱动的解析方式)

    扩展方法:JDOM、DOM4J(在基础的方法上扩展出的,只有java中能够使用的解析方法)

    DOM解析时会一次性的将xml所有的内容加载到内容中,并且形成一个DOM树,若xml非常大,会比较浪费时间,对内容的性能要求也会比较高。

    SAX解析是基于事件的解析,基于事件的解析就是xml解析时是逐步的解析,比如开始解析xml声明的部分就好触发startDocument()方法,等等触发其它事件方法。

    选择DOM还是SAX

    DOM优点:

    形成了树结构,直观好理解,代码更易编写

    解析过程中树结构保留在内存中,方便修改

    缺点:当xml文件较大时,对内存耗费比较大,容易影响解析性能并造成内存溢出

    SAX优点:

    采用事件驱动模式,对内存耗费比较小

    适用于只需要处理xml中数据时

    缺点:不易编码

    很难同时访问同一个xml中的多处不同数据

    JDOM

    仅使用具体类而不使用接口

    API大量使用了Collections类

    DOM4J

    JDOM的一种智能分支,它合并了许多超出基本XML文档表示的功能

    DOM4J使用接口和抽象基本类方法,是一个优秀的Java XML API

    具有性能优异,灵活性好、功能强大和极端易用使用的特点

    是一个开放源代码的软件

    0赞 · 1采集
  • 三色堇忞 2019-11-21

    四种解析XML文件的方式:DOM、SAX、DOM4J|、JDOM

    0赞 · 0采集
  • 程序员慕虎 2019-11-15

    四种XML解析方式:DOM  SAX   DOM4J   JDOM

    http://img2.mukewang.com/5dce6a3e000102c509420266.jpg

    DOM方式解析准备工作

    http://img4.mukewang.com/5dce6ad3000109cd08510201.jpg

    0赞 · 1采集
  • 程序员慕虎 2019-11-07

    四种解析方式测试

    http://img4.mukewang.com/5dc3d7f9000174ac08870493.jpg

    测试结果

    http://img2.mukewang.com/5dc3d81b00018c6b01280137.jpg

    SAX方式速度最快,DOM解析较大xml时可能会内存溢出,DOM4J最灵活。推荐使用DOM4J。

    0赞 · 0采集
  • 程序员慕虎 2019-11-07

    四种解析方式分析

    http://img.mukewang.com/5dc3d6bb0001360e09150422.jpg

    http://img.mukewang.com/5dc3d6ba0001d40706800394.jpg

    http://img3.mukewang.com/5dc3d6bb00019dc307020409.jpg


    0赞 · 0采集
  • 程序员慕虎 2019-11-07

    DOM4J解析子节点的信息

    http://img.mukewang.com/5dc3d3040001a82f07670160.jpg

    0赞 · 0采集
  • 程序员慕虎 2019-11-07

    DOM4J解析节点属性

    http://img2.mukewang.com/5dc3d1e00001f00007690424.jpg

    0赞 · 0采集
  • 程序员慕虎 2019-11-07

    JDOM中存储Book对象

    http://img3.mukewang.com/5dc3cefe0001c01f08230404.jpg

    0赞 · 0采集
  • 程序员慕虎 2019-11-07

    处理JDOM解析xml时的乱码问题

    1. 修改xml文件上方的encoding属性

      http://img3.mukewang.com/5dc3cc180001dfa705490027.jpg

    2. 将构造saxBuilder的方法,改为Read对象,将字节流转变为字符流时确定编码格式。

      http://img3.mukewang.com/5dc3cccb0001db3008050062.jpg


    0赞 · 0采集
  • 程序员慕虎 2019-11-07

    JDOM解析子节点的名和值

    http://img3.mukewang.com/5dc3cab00001710008240216.jpg

    0赞 · 0采集
  • 程序员慕虎 2019-11-07

    使用JDOM进行解析xml节点属性的两种方式

    http://img2.mukewang.com/5dc3c93b00010de907970438.jpg

    0赞 · 0采集
  • 程序员慕虎 2019-11-06

    需要导入jar包jdom.jar

    http://img2.mukewang.com/5dc26e040001e78f05880142.jpg

    http://img2.mukewang.com/5dc26e0400013ec307490233.jpg

    0赞 · 0采集
  • 程序员慕虎 2019-11-06

    在endElement中判断哪个节点访问结束,此时已经在characters获得了value可以将value放入Book对象。

    http://img3.mukewang.com/5dc26a71000132f708220484.jpg

    设置value,Book为全局变量

    http://img4.mukewang.com/5dc26a7100011da207230080.jpg


    0赞 · 0采集
  • 程序员慕虎 2019-11-06

       获取节子节点的节点名

       http://img3.mukewang.com/5dc264f900013fb308050084.jpg

       characters方法获取到节点内的所有字符数组。使用String的trim()方法去除空格,来判断是否是Text节点。

       http://img4.mukewang.com/5dc26502000148f407180267.jpg



    0赞 · 1采集
  • 程序员慕虎 2019-11-06

    http://img1.mukewang.com/5dc25f6e000100e508930492.jpg

    已经知道节点元素时使用getValue("name") 获取节点属性值

    不知道节点元素时使用元素下标i getValue(i) 获取节点属性值

    0赞 · 0采集
  • 程序员慕虎 2019-11-05

    startElement、endElement 方法对应xml的开始标签和结束标签解析

    http://img1.mukewang.com/5dc2677d00010fc607900530.jpg

    http://img3.sycdn.imooc.com/5dc1310400017ffd09390432.jpg

    重写startElement、endElement方法。

    http://img1.sycdn.imooc.com/5dc1316f00015f9908470427.jpg

    重写startDocument() endDocument() 标识解析开始结束的方法

    http://img3.sycdn.imooc.com/5dc133540001897508060514.jpg


    0赞 · 0采集
数据加载中...
开始学习 免费