-
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 优缺点查看全部
-
DOM解析优缺点查看全部
-
XML常用节点类型查看全部
-
DOM方式解析xml查看全部
-
Java解析xml文件内容的方式查看全部
举报
0/150
提交
取消