为了账号安全,请及时绑定邮箱和手机立即绑定

Java眼中的XML---文件读取

难度初级
时长 3小时 0分
学习人数
综合评分9.63
323人评价 查看评价
9.9 内容实用
9.5 简洁易懂
9.5 逻辑清晰
  • 4种解析方式对比:DOM/SAX/JDOM/DOM4J 基础方法:DOM、SAX DOM:平台无关的官方解析方式 SAX:基于事件驱动的解析方式 扩展方法:JDOM、DOM4J(在基础的方法上扩展出来的,只有Java中能够使用的解析方法) DOM: 一次性将xml所有内容置于内存中,并形成一颗倒树。(对于内存要求较高) 优点:形成了树结构,直观好理解,代码更容易编写;解析过程中树结构保留在内存中,方便修改。 缺点:当xml文件较大时,对内存耗费比较大,容易影响解析性能并造成内存溢出。 SAX:基于事件驱动的解析方式 是逐条运行的,会根据当前内容判断应该采用什么方法。 优点:采用事件驱动模式,对内存耗费比较小;适用于只需要处理xml中数据而不考虑结构时使用。 缺点:不易编码;很难同时访问同一个xml中的多处不同数据。 JDOM:仅使用具体类而不使用接口,限制了灵活性;API大量使用了Collection类,对集合类较熟悉时,较方便。 DOM4J:是JDOM的一种智能分支,它合并了许多超出基本xml文档表示的功能;DOM4J使用接口和抽象基本类方法,是一个优秀的JAVA XML API;具有性能优异、灵活性好、功能强大和极端易用使用的特点;是一个开放源代码的软件。性能比JDOM更高。
    查看全部
  • /** * 解析xml元素 */ @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // 调用父类(DefaultHandler)的startElement方法 super.startElement(uri, localName, qName, attributes); // 开始解析book元素的属性 if (qName.equals("book")) { // //已知book元素下属性的名称,根据属性名称获取属性值 // String value = attributes.getValue("id"); // System.out.println("book的属性值是:" + value); // 不知道book元素下属性的名称以及个数,如何获取属性名以及属性值 int num = attributes.getLength(); for (int i = 0; i < num; i++) { System.out.print("book元素的第" + (i + 1) + "个属性名是:" + attributes.getQName(i)); System.out.println("---属性值是:" + attributes.getValue(i)); } } } 运行结果: SAX解析开始 book元素的第1个属性名是:id---属性值是:1 book元素的第1个属性名是:id---属性值是:2 SAX解析结束
    查看全部
  • 使用Dom解析xml文件的属性节点 一、未知节点属性的个数和属性名时: 1、通过document.getElementByTagName("book")获得所有book的节点集合 2、遍历集合 NodeList.getLength()获得集合长度 3、Node node = NodeList.item(index)获取其中的一个节点 4、通过NamedNodeMap attrs = node.getAttributes()获取所有属性集合 5、遍历集合 attrs.getLength()获得集合长度 6、通过atrrs.item(index)获取book节点的某一个属性 7、attr.getNodeName()获得属性名,attr.getNodeValue()获取属性值 二、已知book节点有且只有1个id属性 1、通过document.getElementByTagName("book")获得所有book的节点集合 2、遍历集合 NodeList.getLength()获得集合长度 3、element book=(element)NodeList.item(i);//强制转换为element类型 4、String attrValue = book.getAttribute("id");//获得属性值
    查看全部
  • 新知:DOM在解析xml文件时需要将整个文件加载到内存。SAX解析则利用一个Handler逐一解析(类似于HtmlParser的Visitor),定义Handler的访问行为(Handler继承DefaultHandler类,重写父类的方法)。
    查看全部
  • JUnit:是Java提供的进行单元测试的自动化工具。 项目右键-->Build Path-->Add Libaries-->JUnit 在方法前加上@Test 通过时间来比较 SAX<DOM==DOM4J<JDOM(DOM4J更灵活,推荐)
    查看全部
  • JDOM解析子节点的名和值: Element类的方法(Book): .getChildren() 返回子节点的List集合。(返回List<Element>类型) .getName() 返回节点的名字 .getValue() 返回节点的值
    查看全部
  • <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id="1"> <name>冰与火之歌</name> <author>乔治马丁</author> <year>2014</year> <price>89</price> </book> </book id="2"> <name>安徒生童话</name> <year>2004</year> <price>77</price> <language>English</language> </book> </bookstore>
    查看全部
    1 采集 收起 来源:初次邂逅 XML

    2018-03-22

  • 基础方法:DOM(平台无关的官方解析方式)、SAX(基于事件驱动的解析方式) 扩展方法:JDOM、DOM4J(在基础的方法上扩展出的,只有在java中能够使用的解析方法) DOM:一次性将整个xml文件加载到内存中,形成DOM树 优点:形成了树结构,直观好理解,代码更容易编写 解析过程中树结构保留在内存中,方便修改 缺点:当xml文件较大时,对内存消耗比较大,容易影响解析性能并造成内存溢出 SAX:逐条语句判断解析 优点:采用事件驱动模式,对内存消耗比较小 适用于只需要处理xml中数据时 缺点:不易编码 很难同时访问同一个xml中的多处不同数据 JDOM:仅使用具体类而不使用接口 API大量使用了Collections类 DOM4J:JDOM的一种智能分支,它合并了许多超出基本XML文档表示的功能 DOM4J使用接口和抽象基本类方法,是一个优秀的Java XML API 具有性能优异、灵活性好、功能强大和极端易使用的特点 是一个开放源代码的软件
    查看全部
  • DOM4J 解析 xml 文件 1、创建一个 SAXReader 对象 SAXReader saxReader = new SAXReader(); 2、将 xml 文件加载到 SAXReader 中,并获取 document 对象 Document document = saxReader.read(fileName); 3、通过 getRootElement() 获取根节点元素 Element employeeRoot = document.getRootElement(); 4、通过 elementIterator() 获取子节点元素,返回 Iterator 返回迭代器 Iterator eles = eleRoot.elementIterator(); 5、通过 while 遍历迭代器 while(eles.hasNest()){ Element ele = (Element)eles.next();} 6、获取属性节点类似 JDOM 解析 List<Attribute> attrs = ele.attributes(); 7、获取元素节点名、值 ele.getName() ele.getStringValue()/ele.getText() 8、获取属性节点名、值 ele.getName() ele.geValue()
    查看全部
  • DOM 解析 获取节点名、值:getNodeName() getNodeValue() getTextContent() 获取子节点:getChildNodes() 返回 NodeList 获取属性节点:getAttributes() 返回 NamedNodeMap JDOM 解析 获取节点名、值:getName() getValue() 获取子节点:getChildren() 返回 List<Element> 获取属性节点:getAttributes() 返回 List<Attribute>
    查看全部
  • ---------------------------应用JDOM解析子节点属性------------------------------ //通过增强for循环进行遍历子节点集合 for(Element person : personList){ System.out.print("======开始解析第" + (personList.indexOf(person)+1) + "个人======"); //解析person的属性 List<Attribute> attrList = person.getAttributes();//适用于我们不知道里面有多少属性 person.getAttributeValue("id");//适用于我们知道子节点属性的名字直接获取其属性值 //遍历属性 for(Attribute attr : attrList){ //获取属性名 String attrName = attr.getName(); //获取属性值 String attrValue = attr.getValue(); } System.out.println("======结束解析第" + personList.indexOf(person)+1 + "个人======"); }
    查看全部
  • 使用Dom解析xml文件的属性节点。 在不知道节点属性的个数和属性名时: 1、通过document.getElementByTagName("标签名")获得所有标签名的节点,得到一个NodeList集合 2、通过NodeList.getLength()获得集合长度,遍历集合 3、Node node = NodeList.item(index)获得里面的节点 4、通过NamedNodeMap attrs = node.getAttributes()获取所有属性集合 5、通过attrs.getLength()遍历集合,Node attr = atrrs.item(index) 6、attr.getNodeName()获得属性名,attr.getNodeValue()获取属性值 前提已经知道book节点有且只有1个id属性,将book节点进行强制类型转换,转换成element类型。 1、通过document.getElementByTagName("标签名")获得所有标签名的节点,得到一个NodeList集合 2、通过NodeList.getLength()获得集合长度,遍历集合 3、element book=(element)bookList.item(i);//强制转换为element类型 4、string attrValue = book.getAttribute("id");
    查看全部
  • JUnit是Java提供的一种进行单元测试的自动化工具。测试方法可以写在任意类中的任意位置。使用JUnit可以没有main()入口进行测试。 DOM4J在灵活性和对复杂xml的支持上都要强于DOM DOM4J的应用范围非常的广,例如在三大框架的Hibernate中是使用DOM4J的方式解析文件的。 DOM是w3c组织提供的一个官方解析方式,在一定程度上是有所应用的。 当XML文件比较大的时候,会发现DOM4J比较好用 1.JUnit:Java提供的单元测试;@Test注解;采用JUnit不需要程序入口main方法 2.性能测试结果:几kB的xml文件;建议使用DOM4J解析 DOM-33ms SAX-6ms JDOM-69ms DOM4J-45ms 工程右键build path --Add library--JUnit单元测试 --version:JUnit4 DOM:33,SAX:6 JDOM:69;DOM4J:45 DOM 有可能溢出 多使用DOM4J
    查看全部
  • 解析xml元素(重写startElement()方法) 1. 调用DefaultHanlder 的startElement()方法 super.startElement(uri,localName,qName,attributes); 2. 开始解析book元素属性 if(qname.equals("book")){ //已知节点的属性名时 String value = attributes.getValue("id"); System.out.print("属性值:"+value); //未知节点的属性名时,获取属性名和属性值 for(int i=0;i<attributes.getLength();i++){ System.out.print(attributes.getQname(i)+attributes.getValue(i)); } }
    查看全部
  • 使用Dom解析xml文件的属性节点。 在不知道节点属性的个数和属性名时: 1、通过document.getElementByTagName("标签名")获得所有标签名的节点,得到一个NodeList集合 2、通过NodeList.getLength()获得集合长度,遍历集合 3、Node node = NodeList.item(index)获得里面的节点 4、通过NamedNodeMap attrs = node.getAttributes()获取所有属性集合 5、通过attrs.getLength()遍历集合,Node attr = atrrs.item(index) 6、attr.getNodeName()获得属性名,attr.getNodeValue()获取属性值 前提已经知道book节点有且只有1个id属性,将book节点进行强制类型转换,转换成element类型。 1、通过document.getElementByTagName("标签名")获得所有标签名的节点,得到一个NodeList集合 2、通过NodeList.getLength()获得集合长度,遍历集合 3、element book=(element)bookList.item(i);//强制转换为element类型 4、string attrValue = book.getAttribute("id");
    查看全部

举报

0/150
提交
取消
课程须知
本课程是 Java 的中级课程,需要各位小伙伴们熟悉 Java 面向对象的思想,并能熟练掌握 Java I/O 的相关知识。对如何将内容写入 XML 文件感兴趣的小伙伴们,可以进入《Java 眼中的 XML --- 文件写入》一探究竟
老师告诉你能学到什么?
1、XML 的基本概念 2、XML 在实际项目开发中的的用途和优点 3、如何通过 Java 解析 XML

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!