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

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

难度初级
时长 3小时 0分
学习人数
综合评分9.63
323人评价 查看评价
9.9 内容实用
9.5 简洁易懂
9.5 逻辑清晰
  • qname 就是节点名的意思
    查看全部
  • 解析文件节点以及子节点的值 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输出。 结果为广州大学华软学院.
    查看全部
  • 使用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");
    查看全部
  • 获取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");
    查看全部
  • 常用的节点类型
    查看全部
  • JDOM与DOM4J:其实JDOM也是一个开放源代码的文件 不过DOM4J的性能比JDOM高
    查看全部
  • SAX优缺点
    查看全部
  • DOM优缺点
    查看全部
  • 四种解析方式
    查看全部
  • 解析子节点的信息 Iterator itt = book.elementIterator(); while(itt.hasNext()){ Element bookchild = (Element)itt.next(); bookchild.getName(); bookchild.getStringValue(); }
    查看全部
  • 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()
    查看全部
  • 处理中文乱码步骤: 1)修改xml文件的编码 2)将InputStream封装为一个InputStreamReader,并在InputStreamReader的构造函数中指定正确的编码,然后将InputStreamReader传入到SAXBuilder中就可以处理中文乱码了 利用代码问题解决局部乱码问题(需要利用InputStreamReader来解决)(即使不改变xml文件编码也行) (1)InputStream in=new FIleStream("book.xml"); (2)InputStreamReader isr = new InputStreamReader(in, "utf-8"); (3)Document document = saxBuilder.build(isr);
    查看全部
  • DOM 解析 获取节点名、值:getNodeName() getNodeValue() getTextContent() 获取子节点:getChildNodes() 返回 NodeList 获取属性节点:getAttributes() 返回 NamedNodeMap JDOM 解析 获取节点名、值:getName() getValue() 获取子节点:getChildren() 返回 List<Element> 获取属性节点:getAttributes() 返回 List<Attribute>
    查看全部
  • 应用 JDOM 解析节点属性 //获取根节点下的子节点 List<Element> bookList = rootElement.getChildren(); // 继续进行解析 for (Element book : bookList) { Book bookEntity = new Book(); System.out.println("======开始解析第" + (bookList.indexOf(book) + 1) + "书======"); // 解析book的属性集合 List<Attribute> attrList = book.getAttributes(); // //知道节点下属性名称时,获取节点值 // book.getAttributeValue("id"); // 遍历attrList(针对不清楚book节点下属性的名字及数量) for (Attribute attr : attrList) { // 获取属性名 String attrName = attr.getName(); // 获取属性值 String attrValue = attr.getValue(); System.out.println("属性名:" + attrName + "----属性值:" + attrValue); System.out.println("======结束解析第" + (bookList.indexOf(book) + 1) + "书======");
    查看全部
  • JDOM解析文件 导入jar包 1.创建一个SAXBuilder对象 SAXBuilder saxbuilder=newSAXBuilder(); 2.创建输入流,将xml文件加载到输入流中(抛出FileNotFoundException) Inputstream in=new FileInputstream("xxx.xml"); 3.通过SAXBuilder的Build方法将输入流加载到saxb中获取dom对象 Document doc = saxbuilder.build(in); 4.通过document对象获取xml文件的根结点 Element rootElement =doc.getRootElement(); 5.获取根结点下的子节点的List集合 List<Element> bookList = rootElement.getChildren(); JDOM 开始解析前的准备工作 public static void main(String[] args) { // 进行对books.xml文件的JDOM解析 // 准备工作 // 1.创建一个SAXBuilder的对象 SAXBuilder saxBuilder = new SAXBuilder(); InputStream in; try { // 2.创建一个输入流,将xml文件加载到输入流中 in = new FileInputStream("src/res/books.xml");//放在包下可以直接用“/”来分隔 // 3.通过saxBuilder的build方法,将输入流加载到saxBuilder中 Document document = saxBuilder.build(in); // 4.通过document对象获取xml文件的根节点 Element rootElement = document.getRootElement(); // 5.获取根节点下的子节点的List集合 List<Element> bookList = rootElement.getChildren();
    查看全部

举报

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

微信扫码,参与3人拼团

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

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