dom解析xml,会一次性读入xml文件,会把文件中的所有元素,解析成一个个Node对象节点。dom解析是基于树和节点的文档,通过操作节点的相关方法,可以获取节点的属性,节点的内容,也可以获节点的子节点,如此便可以对xml文件进行解析。
所以说dom解析便于操作,可以轻松完成增删改查,不过dom解析的文档不适合过大,由于它是将文档读入内存之中,过大的文件影响了机器性能,甚至容易导致内存溢出。
Node对象提供了很多常量,表示当前结点的类型,基于Node对象的操作会相对比较复杂,所以我们可以把Node转成其对应子类,子类里提供了很多便捷的方法去获取数据。如把Node类型的对象转成Element对象。
XML文档内容;
解析思路;
1,创建工厂实例 2,创建工厂解析器 3,给定指定的xml文件 需要用到重要的方法; getChildNodes()获取标签的元素 getTextContent获取标签元素的内容 getAttributes获取元素的属性
JAVA解析xml文档代码如下;
方法一:
package Dom解析; /** * 设置对象的基本属性 * @author Administrator * */ public class Student { String name; String sex; String cla; int no; int num; }
解析代码类;
package Dom解析; import java.util.ArrayList; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; 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; /** * DOM解析XML文档 * @author Administrator * */ public class DOMParse { // 创建队列保存对象 private static ArrayList<Student> liststu = new ArrayList<Student>(); // 设置对象 static Student stu = null; public static void main(String[] args) throws Exception { String path = "C:\\Users\\Administrator\\Desktop\\xml\\student2.xml"; // 1,实例化一个用来生产DOM解析器的工厂对象 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); // 2使用工厂得到一个DOM解析器对象 DocumentBuilder builder = factory.newDocumentBuilder(); // 3,给定制定的xml文件 Document doc = builder.parse(path); pausexml(doc); //遍历队列 for (Student stu : liststu) { System.out.println(stu.name + " " + stu.no + " " + stu.num + " " + stu.cla + " " + stu.sex); } } // 解析xml的方法 public static void pausexml(Node node) { // 获得所有的子节点,得到所有子节点的节点队列 NodeList list = node.getChildNodes(); // 遍历队列,依次取出 for (int i = 0; i < list.getLength(); i++) { Node node1 = list.item(i); // 遍历节点的名称和值 String str = node1.getNodeName(); // System.out.println(val); //判断Node1是不是元素 if (node1 instanceof Element) { if (str.equals("stu")) { //创建对象 stu = new Student(); //将创建的对象放到队列中 liststu.add(stu); // 获得该节点元素的属性 NamedNodeMap nnm = node1.getAttributes(); // 遍历节点中的元素 for (int j = 0; j < nnm.getLength(); j++) { Node nodelist = nnm.item(j); // 根据遍历出来的元素得到该节点元素属性的名字和值 String name = nodelist.getNodeName(); String value = nodelist.getNodeValue(); // System.out.println(name +"<<<>>>>"+value); if (name.equals("no")) { //如果是no就转化为int型 stu.no = Integer.parseInt(value); } if (name.equals("num")) { stu.num = Integer.parseInt(value); } } } if (str.equals("name")) { stu.name = node1.getTextContent(); } if (str.equals("sex")) { // 如果标签是sex stu.sex = node1.getTextContent(); // System.out.println(sex + ">>>>>>>>>>>>>>>>>>>>"); } if (str.equals("cla")) { stu.cla = node1.getTextContent(); // System.out.println(cla + "<<<<<<<<<<<<<<<"); } } pausexml(node1); } } }运行结果:
张三丰 1234 1111 武当 男
小龙女 2345 0 古墓 女
小龙女 2345 0 古墓 女
解析方法二:
package Dom解析; import java.util.ArrayList; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; 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; /** * DOM解析XML文档 * * @author Administrator * */ public class ReadDOMParse { public static void main(String[] args) throws Exception { String path = "C:\\Users\\Administrator\\Desktop\\xml\\student2.xml"; // 1.实例化工厂 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); // 2,创建工厂实例 DocumentBuilder builder = factory.newDocumentBuilder(); // 3,解析 Document doc = builder.parse(path); //获取元素的名称并返回 NodeList nodelist = doc.getElementsByTagName("stu"); //遍历队列 for(int i = 0;i<nodelist.getLength();i++){ // 输出名字 System.out.println("name:" + doc.getElementsByTagName("name").item(i).getFirstChild() .getNodeValue()); // 输出性别 System.out.println("sex:" + doc.getElementsByTagName("sex").item(i).getFirstChild() .getNodeValue()); // 输出班级 System.out.println("cla:" + doc.getElementsByTagName("cla").item(i).getFirstChild() .getNodeValue()); } } }运行结果;
name:张三丰
sex:男
cla:武当
name:小龙女
sex:女
cla:古墓
sex:男
cla:武当
name:小龙女
sex:女
cla:古墓
相关推荐
完整的Oracle xmldom解析xml入参,经过测试,可以解析,成功入到数据表中。
示例源码: ...什么是 XML DOM? XML DOM 是: 用于 XML 的标准对象模型 用于 XML 的标准编程接口 中立于平台和语言 W3C 标准 XML DOM 定义了所有 XML 元素...5、XMLDOM教程文档推荐参考:https://www.w3cschool.cn/xmldom
asp使用xmldom对象解析xml文件示例。
dom解析XML dom解析XML dom解析XMLdom解析XML dom解析XML
XML解析技术DOM4J解析.doc
Android使用Dom方式解析XML,虽然xml文件太大时不建议用dom方式解析,但是如果文件比较小,也不失为一种选择。项目中xml放在assets文件夹下,view绑定使用butterknife
DOM解析可加载XML文件 对XML文件进行解析 获取结点信息 更新结点信息 及其属性等信息
包括android代码实例以及个人对Dom解析xml文件的总结文档。
DOM解析XML文件例子DOM解析XML文件例子DOM解析XML文件例子
DOM解析XML 创建XML
FireFox下用XML DOM解析XML文档(ASP.NET Web)
IE下使用XML DOM解析XML文件(ASP.NET Web)
xml解析,dom4j解析,xml循环节点处理,java代码 jar包执行20190331.rar
以一个实例来说明DOM解析XML文件的方法与过程。
java学习笔记——使用DOM解析XML和使用SAX解析XML
使用dom解析XML,演示了如何使用DOM的五个基本对象来解析xml。
用dom解析xml文件
java dom解析xml <?xml version="1.0" encoding="UTF-8"?> <Head> <FileVersion>010000</FileVersion> <FileLength>00000CC3</FileLength> <FileTime>20100629173405</FileTime> <KeyIndex>1...
android为我们提供了多种解析方式,DOM解析,代码操作简单,一直为解析xml文件的一个不错的选择