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

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

难度初级
时长 3小时 0分
学习人数
综合评分9.63
323人评价 查看评价
9.9 内容实用
9.5 简洁易懂
9.5 逻辑清晰
  • 处理中文乱码步骤: 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();
    查看全部
  • SAX解析XML的速度比DOM的块, SAX的解析XML的解析器,需要重写startElement()开始解析的方法和endElemaent()结束解析的方法和 characters()方法 重写charaters()方法时,String(byte[] bytes,int offset,int length)的构造方法进行数组的传递 顺序:startElement()--characters()--endElemaent() 再去除解析时多余空格 if(!value.trim().equals("")){ System.out.println(value); } 使用 SAX 解析 XML 文件的节点名和节点间文本 startElement方法——String qName(第三个参数):节点名 startElement方法——Attributes attributes(第四个参数):节点名的属性操作 characters方法——char[] ch(第一个参数):xml整个文本内容,所以需截取想要的内容 如图代码+以下代码 public void endElement(String uri, String localName, String qName) throws SAXException { //调用DefaultHandler类的endElement方法 super.endElement(uri, localName, qName); //判断是否针对一本书已经遍历结束 if (qName.equals("book")) { System.out.println("======================结束遍历某一本书的内容================="); } } public void characters(char[] ch, int start, int length) throws SAXException { super.characters(ch, start, length); String value = new String(ch, start, length); if (!value.trim().equals("")) { System.out.println("节点值是:" + value); } }
    查看全部
  • 解析xml元素节点属性名与属性值:<br> 1. 重写DefalutHandler的实现类对象的startElement()方法<br> 2. 在startElement()方法中,先调用DefaultHanlder 的startElement()方法<br> 3. 已知节点的属性名的情况下<br> if(qname.equals("book")){<br> String value = attributes.getValue("id");<br> }<br> 4.不知节点的属性名的情况下<br> 获取属性长度<br> int length=attributes.getLength();<br> 获取属性名和属性值 for(int i=0;i<length;i++){ System.out.print(attributes.getQname(index)+attributes.getValue(index)); }
    查看全部
  • DOM:先全部读取<br><br> SAX解析:通过handler处理类逐个分析每个节点,从外到内逐个解析。一个一个来<br> startElement, endElement(开始标签解析,结束标签解析)<br><br> <br><br> 步骤:<br><br> 1.通过SAXParserFactory的静态newInstance()方法获取SAXParserFactory实例factory<br><br> SAXParserFactory factory = SAXParserFactory.newInstance();<br><br> <br><br> 2.通过SAXParserFactory实例的newSAXParser()方法返回SAXParser实例parser<br><br> SAXParser parser = factory.newSAXParser();<br><br> parser.parse("路径",handler类型对象);(需创建见3)<br><br> <br><br> 3.创建一个类继承DefaultHandler,重写其中一些方法进行业务处理并创建这个类的实例handler<br><br> 创建一个类继承DefaultHandler类,并重写父类的四个方法<br><br> startElement()<br><br> 用于遍历xml的开始标签<br><br> endElement()<br><br> 遍历xml结束标签<br><br> startDocument<br><br> 用来标识解析开始<br><br> endDocument<br><br> 用来标识解析结束<br><br> <br><br> SAX解析xml步骤<br> 1.通过SAXParseFactory的静态newInstance()方法获取SAXParserFactory实例factory<br><br> 2.通过SAXParserFactory实例的newSAXParser()方法返回SAXParser实例parser<br><br> 3.创建一个类继承DefaultHandle,重写方发进行业务已处理创建这个类的实例handle
    查看全部
  • 通过book元素的getChildNodes()得到所有子节点的集合,需要注意的是,在DOM的读取中,会将空格和回车看成是text节点类型,因此需要注意区分开(可以通过判断节点类型是否为Node.ELEMENT_NODE)。通过item(index)遍历所有子节点,通过item(index)的getNodeName()方法还来获取子节点的名字,而获取它的属性值时,要注意直接使用getNodeValue()得到的是标签的值(一般是空)因此可以使用两种方法: 1.使用item(index).getFirstNode().getNodeValue()来返回值 2.使用item(index).getTextContent()来返回属性值 上面两种方法的区别在于在一个标签中是否包含的其他的子标签,如果有的话,那么第1个方法就仍得到null,第二个方法会返会将自标签的内容一起获得。
    查看全部
  • 常用的节点类型
    查看全部
  • 一、解析XML文件 1、java读取xml文件中的内容过程叫做解析xml文件 2、解析目的:获取节点名、节点值、属性名、属性值 3、四种解析方式:DOM、SAX、DOM4J、JDOM,前面两个为java官方提供,后面两个需要导入jar包 二、准备工作 1、创建一个DocumentBuilderFactory对象,通过.newInstance()获得 2、创建一个DocumentBuilder对象,通过DocumentBuilderFactory对象的newDocumentBuilder()获得 3、通过DocumentBuilder对象的parse(uri)进行解析,接受一个Document org.w3c.dom对象,将xml成功加载到java下:Document document = db.parse("xxx.xml"); 使用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");
    查看全部
  • DOM解析xml方法准备工作:三步<br> 创建DocumentBuilderFactory对象 创建DocumentBuilder对象 <br> 通过DocumentBuilder对象的parse方法加载xml文件到当前项目下
    查看全部
  • java程序解析xml文件的四中方法:DOM与SAX方法是java官方提供的
    查看全部
  • 常用的节点类型
    查看全部
  • JODM DOM4J优点
    查看全部
  • sax 优缺点
    查看全部

举报

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

微信扫码,参与3人拼团

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

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