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

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

难度初级
时长 3小时 0分
学习人数
综合评分9.63
323人评价 查看评价
9.9 内容实用
9.5 简洁易懂
9.5 逻辑清晰
  • /** * 解析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解析结束
    查看全部
  • /** * 解析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")) { String value = attributes.getValue("id"); System.out.println(value); } 运行结果: SAX解析开始 1 2 SAX解析结束
    查看全部
  • package com.imooc.test; import java.io.IOException; import javax.swing.text.html.parser.Parser; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.SAXException; import com.imooc.SAXParserHandler; public class SAXTest { public static void main(String[] args) { // 获取一个SaxParserFactory的实例 SAXParserFactory factory = SAXParserFactory.newInstance(); // 通过foctory获取SAXParser实例 try { SAXParser parser = factory.newSAXParser(); //创建一个对象SAXParserHandler对象 SAXParserHandler handler = new SAXParserHandler(); parser.parse("books.xml", handler); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
    查看全部
  • package com.imooc; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class SAXParserHandler extends DefaultHandler { /** * 用来遍历xml文件的开始标签 */ @Override public void startElement(String arg0, String arg1, String arg2, Attributes arg3) throws SAXException { // TODO Auto-generated method stub super.startElement(arg0, arg1, arg2, arg3); } /** * 用来遍历xml文件的开始标签 */ @Override public void endElement(String arg0, String arg1, String arg2) throws SAXException { // TODO Auto-generated method stub super.endElement(arg0, arg1, arg2); } /** * 用来标识解析开始 */ @Override public void startDocument() throws SAXException { // TODO Auto-generated method stub super.startDocument(); System.out.println("SAX解析开始"); } /** * 用来标识解析结束 */ @Override public void endDocument() throws SAXException { // TODO Auto-generated method stub super.endDocument(); System.out.println("SAX解析结束"); } }
    查看全部
  • System.out.println(" 节点值是:" + childNodes.item(k).getTextContent() );
    查看全部
  • 运行结果: 一共有2本书! =====下面开始遍历第1本书的内容:===== id的属性值为:1 第1本书共有9个子节点 第2个节点的节点名是:name--节点值是:冰与火之歌 第4个节点的节点名是:author--节点值是:乔治马丁 第6个节点的节点名是:year--节点值是:2014 第8个节点的节点名是:price--节点值是:89 ======结束遍历第1本书的内容:===== =====下面开始遍历第2本书的内容:===== id的属性值为:2 第2本书共有9个子节点 第2个节点的节点名是:name--节点值是:安徒生童话 第4个节点的节点名是:year--节点值是:2004 第6个节点的节点名是:price--节点值是:77 第8个节点的节点名是:language--节点值是:English ======结束遍历第2本书的内容:=====
    查看全部
  • Element book = (Element) bookList.item(i); // 通过getAttribute("id")方法获取属性值 String attrValue = book.getAttribute("id"); System.out.println("id的属性值为:" + attrValue); // 解析book节点的子节点 NodeList childNodes = book.getChildNodes(); // 遍历childNodes获取每个节点的节点名和节点值 System.out.println("第" + (i + 1) + "本书共有" + childNodes.getLength() + "个子节点"); for (int k = 0; k < childNodes.getLength(); k++) { // 区分出text类型的node和element类型的node if (childNodes.item(k).getNodeType() == Node.ELEMENT_NODE) { // 获取了element类型节点的节点名 System.out.print("第" + (k + 1) + "个节点的节点名是:" + childNodes.item(k).getNodeName()); // 获取了element类型节点的节点值 System.out.println("--节点值是:" + childNodes.item(k).getFirstChild() .getNodeValue()); } } System.out.println("======结束遍历第" + (i + 1) + "本书的内容:====="); }
    查看全部
  • 常用的节点类型
    查看全部
  • 一共有2本书! =====下面开始遍历第1本书的内容:===== id的属性值为:1 第1本书共有9个子节点 name null author null year null price null ======结束遍历第1本书的内容:===== =====下面开始遍历第2本书的内容:===== id的属性值为:2 第2本书共有9个子节点 name null year null price null language null ======结束遍历第2本书的内容:=====
    查看全部
  • 一共有2本书! =====下面开始遍历第1本书的内容:===== id的属性值为:1 第1本书共有9个子节点 #text name #text author #text year #text price #text ======结束遍历第1本书的内容:===== =====下面开始遍历第2本书的内容:===== id的属性值为:2 第2本书共有9个子节点 #text name #text year #text price #text language #text ======结束遍历第2本书的内容:=====
    查看全部
  • package com.imooc.dmtest.test; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; //import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; public class DOMTest { public static void main(String[] args) { // 创建一个DocumentBuilderFactory.newInstance(); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); // 创建一个DocumentBuilder对象
    查看全部
  • try { // 创建DocumentBuilder对象 DocumentBuilder db = dbf.newDocumentBuilder(); // 通过DocumentBuilder对象的parse()方法加载books.xml文件到当前目录下 Document document = db.parse("books.xml"); // 获取所有book节点的集合 NodeList bookList = document.getElementsByTagName("book"); // 通过nodeList的getLength()方法可以获取bookList的长度 System.out.println("一共有" + bookList.getLength() + "本书!"); // 遍历每一个book节点 for(int i =0;i < bookList.getLength();i++){ System.out.println("=====下面开始遍历第" + (i + 1) + "本书的内容:====="); //通过item(i)获取一个book节点,nodeList的索引值从0开始 // Node book = bookList.item(i); //获取book节点的所有属性的集合 // NamedNodeMap attrs = book.getAttributes(); // System.out.println("第" + (i+1) +"本书共有" + attrs.getLength() +"个属性"); //遍历book的属性 // for(int j = 0;j < attrs.getLength();j++){ // //通过item(index)方法获取book节点的某一个属性 // Node attr = attrs.item(j); // 或者 attrs.item(j).getNodeName();
    查看全部
  • // // 获取属性名 // System.out.print("属性名:" + attr.getNodeName()); // // 获取属性值 // System.out.println(" 属性值:" + attr.getNodeValue()); // } //前提:已经知道book节点有且只有一个id属性值 //将Book节点进行强制类型转换,转换成Element类型 Element book = (Element)bookList.item(i); //通过getAttribute("id")方法获取属性值 String attrValue = book.getAttribute("id"); System.out.println("id的属性值为:" + attrValue); System.out.println("======结束遍历第" + (i + 1) + "本书的内容:====="); } } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
    查看全部
  • 标题<?xml version="1.0" encoding="UTF-8"?> <> </>
    查看全部
    0 采集 收起 来源:初次邂逅 XML

    2018-03-22

  • kandao13:55
    查看全部

举报

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

微信扫码,参与3人拼团

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

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