精华内容
下载资源
问答
  • 本文实例讲述了JSP基于dom解析xml的方法。分享给大家供大家参考,具体如下: 初次学习用dom操作xml文件,有很多不足之处,牛人多给点建议,练习时我没对中文做乱码处理,也没做验证哦!O(∩_∩)O~ 实体类:User ...
  • 本文实例讲述了Android中DOM解析xml文件的方法。分享给大家供大家参考,具体如下: 一、在assets文件中写xml文件 <?xml version=1.0 encoding=UTF-8?> 李明 <age>30 李向梅 <age>25 二、在...
  • 主要介绍了JAVA DOM解析XML文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • DOM将整个XML文件加载到...应用程序可以通过遍历节点树的方式来解析XML文件中的各个节点、属性等信息;这种方式便于对XML节点的添加修改等,而且解析也很方便,然后它比较耗费内存,解析速度也不快,下面看使用示例吧
  • 一 、python模块 xml.dom 解析XML的APIminidom.parse(filename)加载读取XML文件 doc.documentElement获取XML文档对象 node.getAttribute(AttributeName)获取XML节点属性值 node.getElementsByTagName(TagName)获取...
  • Java:使用DOM解析XML

    千次阅读 2018-10-17 18:42:45
    要理解XML,HTML等格式,先来理解文档对象模型DOM   根据 DOM,HTML 文档中的每个成分都是一个节点,这些节点组成了一棵树。 DOM 是这样规定的: 整个文档是一个文档节点 每个 HTML 标签是一个元素节点 包含在 ...

    XML简介

    要理解XML,HTML等格式,先来理解文档对象模型DOM

      

    根据 DOM,HTML 文档中的每个成分都是一个节点,这些节点组成了一棵树。
    DOM 是这样规定的:
    整个文档是一个文档节点
    每个 HTML 标签是一个元素节点
    包含在 HTML 元素中的文本是文本节点
    每一个 HTML 属性是一个属性节点
    注释属于注释节点

    节点彼此都有等级关系。HTML 文档中的所有节点组成了一个文档树(或节点树)。HTML 文档中的每个元素、属性、文本等都代表着树中的一个节点。树起始于文档节点,并由此继续伸出枝条,直到处于这棵树最低级别的所有文本节点为止。

    DOM将整个XML文件加载到内存中,并构建出节点树;应用程序可以通过遍历节点树的方式来解析XML文件中的各个节点、属性等信息;
    这种方式便于对XML节点的添加修改等,而且解析也很方便,然后它比较耗费内存,解析速度也不快

    现在主要流行的是sax,dom4j和jdom
    使用dom4j :https://blog.csdn.net/chengmuzhe2690/article/details/83115697

    这章主要说使用DOM来解析

    而使用DOM解析XML是有步骤的

    1、创建解析器工厂对象 DocumentBuildFactory对象

    2、由解析器工厂对象创建解析器对象,即DocumentBuilder对象

    3、由解析器对象对指定XML文件进行解析,构建相应的DOM树,创建Document对象,生成一个Document对象

    4、以Document对象为起点对DOM树的节点进行查询

    5、使用Document的getElementsByTagName方法获取元素名称,生成一个NodeList集合,

    6、遍历集合

    DocumentBuilderFactory factroy = DocumentBuilderFactory.newInstance();
    		try {
    			DocumentBuilder builder = factroy.newDocumentBuilder();
    			Document document = builder.parse("pets.xml");
    			NodeList lists = document.getElementsByTagName("dog");
    			System.out.println("chengmuzhe养的狗狗初始化信息");
    
    
    			for (int i = 0; i < lists.getLength(); i++) {
    				Node pet = lists.item(i);
    				for (Node node = pet.getFirstChild(); node != null; node = node
    						.getNextSibling()) {
    					if (node.getNodeType() == Node.ELEMENT_NODE) {
    						String name = node.getNodeName();
    						String value = node.getFirstChild().getNodeValue();
    						System.out.println(name + ":" + value + "\t");
    					}
    				}
    			}
    			NodeList lists1 = document.getElementsByTagName("penguin");
    			System.out.println("chengmuzhe养企鹅的初始化信息");
    
    			for (int i = 0; i < lists1.getLength(); i++) {
    				Node pet = lists1.item(i);
    				for (Node node = pet.getFirstChild(); node != null; node = node
    						.getNextSibling()) {
    					if (node.getNodeType() == Node.ELEMENT_NODE) {
    						String name = node.getNodeName();
    						String value = node.getFirstChild().getNodeValue();
    						System.out.println(name + ":" + value + "\t");
    					}
    				}
    			}
    
    		} catch (Exception e) {
    			// TODO: handle exception
    		}
    
    	}

     

    展开全文
  • JAVA原生DOM解析XML

    千次阅读 2018-10-26 14:29:32
    DOM需要把整个XML放进内存中,如果数据量少没有什么影响,如果数据量太大,将会给服务器带来很大的负担。 下面是一个XML的实体类Linkman public class Linkman { private String id; private String name; ...

    DOM需要把整个XML放进内存中,如果数据量少没有什么影响,如果数据量太大,将会给服务器带来很大的负担。

    下面是一个XML的实体类Linkman

    public class Linkman {
    	private String id;
    	private String name;
    	private String address;
    	private String email;
    	public String getId() {
    		return id;
    	}
    	public void setId(String id) {
    		this.id = id;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getAddress() {
    		return address;
    	}
    	public void setAddress(String address) {
    		this.address = address;
    	}
    	public String getEmail() {
    		return email;
    	}
    	public void setEmail(String email) {
    		this.email = email;
    	}
    	@Override
    	public String toString() {
    		return "Linkman [id=" + id + ", name=" + name + ", address=" + address + ", email=" + email + "]";
    	}
    }
    

    然后是XML的内容:

    <?xml version="1.0" encoding="UTF-8" standalone="no"?><root>
    	<linkman id="3"><name>王美丽</name><address>西南医学院</address><email>wangmeili@163.com</email></linkman>
    	<linkman id="2"><name>张三</name><address>泸职院</address><email>zhangsan@163.com</email></linkman>
    	<linkman id="1"><name>张三1</name><address>泸职院22</address><email>zhangsan1@163.com</email></linkman>
    	<linkman id="4"><name>bbb</name><address>aaaa</address><email>ccc@163.com</email></linkman>
    <linkman id="5"><name>张无忌</name><address>高新区创业园</address><email>ximenchuixue@163.com</email></linkman></root>

    然后是一个测试类:其中包含五个方法,增删改,根据查询单个,查询全部

    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult;
    
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.NodeList;
    
    public class XmlParseTest {
    	public static void main(String[] args) {
    		XmlParseTest test = new XmlParseTest();
    		Linkman linkman = new Linkman();
    		linkman.setId("5");
    		linkman.setName("西门吹雪");
    		linkman.setAddress("高新区创业园");
    		linkman.setEmail("ximenchuixue@163.com");
    //		test.insert(linkman);
    //		test.delete("5");
    		Linkman lkm = test.selectOneById("5");
    		lkm.setName("张无忌");
    		test.update(lkm);
    		List<Linkman> list = new XmlParseTest().selectAll();
    		for (Linkman lm : list) {
    			System.err.println(lm);
    		}
    	}
    
    	public void insert(Linkman linkman) {
    		try {
    			// 获取工厂对象
    			DocumentBuilderFactory bbf = DocumentBuilderFactory.newInstance();
    			// 获取构建对象
    			DocumentBuilder builder = bbf.newDocumentBuilder();
    			// 解析路径得到文档对象
    			Document doc = builder.parse(new File("resource/linkman.xml"));
    			// 获取根元素
    			Element root = doc.getDocumentElement();
    			// 创建linkman元素
    			Element linkmanEl = doc.createElement("linkman");
    			linkmanEl.setAttribute("id", linkman.getId());
    			// 把linkman作为root的子节点
    			root.appendChild(linkmanEl);
    			// 创建name、address、email
    			Element nameEl = doc.createElement("name");
    			Element addressEl = doc.createElement("address");
    			Element emailEl = doc.createElement("email");
    			// 给他们赋值内容
    			nameEl.setTextContent(linkman.getName());
    			addressEl.setTextContent(linkman.getAddress());
    			emailEl.setTextContent(linkman.getEmail());
    			// 建立name、address、email和linkman标签的关系
    			linkmanEl.appendChild(nameEl);
    			linkmanEl.appendChild(addressEl);
    			linkmanEl.appendChild(emailEl);
    
    			// 同步 将内存中的xml树,写到文件中
    			TransformerFactory factory = TransformerFactory.newInstance();
    			Transformer transformer = factory.newTransformer();
    			transformer.transform(new DOMSource(doc), new StreamResult("resource/linkman.xml"));
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    	public void update(Linkman linkman) {//id=5 name ="林青霞"
    		try {
    			// 获取工厂对象
    			DocumentBuilderFactory bbf = DocumentBuilderFactory.newInstance();
    			// 获取构建对象
    			DocumentBuilder builder = bbf.newDocumentBuilder();
    			// 解析路径得到文档对象
    			Document doc = builder.parse(new File("resource/linkman.xml"));
    			// 获取根元素
    			Element root = doc.getDocumentElement();
    			// 获取所有的Linkman元素
    			NodeList nodeList = root.getElementsByTagName("linkman");
    			for (int i = 0; i < nodeList.getLength(); i++) {
    				// 获取linkman元素的id属性值,来判断
    				Element linkmanEl = (Element) nodeList.item(i);
    				String linkmanId = linkmanEl.getAttribute("id");
    				if (linkmanId.equals(linkman.getId())) {
    					linkmanEl.getElementsByTagName("name").item(0).setTextContent(linkman.getName());
    					linkmanEl.getElementsByTagName("address").item(0).setTextContent(linkman.getAddress());
    					linkmanEl.getElementsByTagName("email").item(0).setTextContent(linkman.getEmail());
    					//同步
    					TransformerFactory.newInstance().newTransformer().transform(new DOMSource(doc),
    							new StreamResult("resource/linkman.xml"));
    					return;
    				}
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    	public void delete(String id) {
    		try {
    			// 获取工厂对象
    			DocumentBuilderFactory bbf = DocumentBuilderFactory.newInstance();
    			// 获取构建对象
    			DocumentBuilder builder = bbf.newDocumentBuilder();
    			// 解析路径得到文档对象
    			Document doc = builder.parse(new File("resource/linkman.xml"));
    			// 获取根元素
    			Element root = doc.getDocumentElement();
    			// 获取所有的Linkman元素
    			NodeList nodeList = root.getElementsByTagName("linkman");
    			for (int i = 0; i < nodeList.getLength(); i++) {
    				// 获取linkman元素的id属性值,来判断
    				Element linkmanEl = (Element) nodeList.item(i);
    				String linkmanId = linkmanEl.getAttribute("id");
    				if (linkmanId.equals(id)) {
    					// 删除
    					root.removeChild(linkmanEl);
    					// 同步
    					TransformerFactory.newInstance().newTransformer().transform(new DOMSource(doc),
    							new StreamResult("resource/linkman.xml"));
    					return;
    				}
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    	public Linkman selectOneById(String id) {
    		try {
    			// 获取工厂对象
    			DocumentBuilderFactory bbf = DocumentBuilderFactory.newInstance();
    			// 获取构建对象
    			DocumentBuilder builder = bbf.newDocumentBuilder();
    			// 解析路径得到文档对象
    			Document doc = builder.parse(new File("resource/linkman.xml"));
    			// 获取根元素
    			Element root = doc.getDocumentElement();
    			// 获取所有的Linkman元素
    			NodeList nodeList = root.getElementsByTagName("linkman");
    			for (int i = 0; i < nodeList.getLength(); i++) {
    				// 获取linkman元素的id属性值,来判断
    				Element linkmanEl = (Element) nodeList.item(i);
    				String linkmanId = linkmanEl.getAttribute("id");
    				if (linkmanId.equals(id)) {
    					// 如果等于参数id,就去获取对应的name、address、email
    					String name = linkmanEl.getElementsByTagName("name").item(0).getTextContent();
    					String address = linkmanEl.getElementsByTagName("address").item(0).getTextContent();
    					String email = linkmanEl.getElementsByTagName("email").item(0).getTextContent();
    					// 创建Linkman对象
    					Linkman linkman = new Linkman();
    					linkman.setId(id);
    					linkman.setName(name);
    					linkman.setAddress(address);
    					linkman.setEmail(email);
    					return linkman;
    				}
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return null;
    	}
    
    	public List<Linkman> selectAll() {
    		List<Linkman> list = new ArrayList<>();
    		// Dom方法
    		// 获取Document对象
    		// 1.获取DocumentBuilderFactory对象
    		DocumentBuilderFactory bbf = DocumentBuilderFactory.newInstance();
    		// 2.使用DocumentBuilderFactory创建DocumentBuilder对象
    		try {
    			DocumentBuilder builder = bbf.newDocumentBuilder();
    			// 3.使用DocumentBuilder解析一个xml路径,得到一个Document对象
    			Document doc = builder.parse(new File("resource/linkman.xml"));
    			// 获取根元素
    			Element root = doc.getDocumentElement();
    			// 获取所有的linkman
    			NodeList linkmans = root.getElementsByTagName("linkman");
    			for (int i = 0; i < linkmans.getLength(); i++) {
    				// 遍历得到每一个linkman标签
    				Element linkmanEl = (Element) linkmans.item(i);
    				// 通过linkman标签 去获取name标签、address标签、email标签
    				Element nameEl = (Element) linkmanEl.getElementsByTagName("name").item(0);
    				Element addressEl = (Element) linkmanEl.getElementsByTagName("address").item(0);
    				Element emailEl = (Element) linkmanEl.getElementsByTagName("email").item(0);
    				// 获取name、address、email的值
    				String name = nameEl.getTextContent();
    				String address = addressEl.getTextContent();
    				String email = emailEl.getTextContent();
    				// 获取linkman标签的id属性
    				String id = linkmanEl.getAttribute("id");
    
    				// 创建Linkman对象
    				Linkman linkman = new Linkman();
    				linkman.setId(id);
    				linkman.setName(name);
    				linkman.setAddress(address);
    				linkman.setEmail(email);
    				// 将linkman对象添加到集合
    				list.add(linkman);
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return list;
    	}
    
    }
    

     

    展开全文
  • java中DOM解析xml文件

    2018-07-24 11:44:47
    本文介绍了如何利用DOM(即Document Object Model文档对象模型)解析xml文件。 首先有一个xml文件: &lt;?xml version=\"1.0\" encoding=\"UTF-8\" ?&gt; &lt;User&gt; &...

    本文介绍了如何利用DOM(即Document Object Model文档对象模型)解析xml文件。

    首先有一个xml文件:

    <?xml version=\"1.0\" encoding=\"UTF-8\" ?>
    <User>
    	<city country="中国">南京</city>
    	<name>刘文文</name>
    	<age>25</age>
    	<sex>男</sex>
    	<occupation>程序员</occupation>
    </User>
    

    利用DOM解析这个xml文件:

    import java.io.ByteArrayInputStream;
    import java.io.InputStream;
    
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    
    import org.w3c.dom.Document;
    import org.w3c.dom.NodeList;
    
    public class ParsingXml {
    	public static void main(String args[]) {
    		String xml="<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n" + 
    				"<User>\r\n" + 
    				"	<city country=\"中国\">南京</city>\r\n" + 
    				"	<name>刘文文</name>\r\n" + 
    				"	<age>25</age>\r\n" + 
    				"	<sex>男</sex>\r\n" + 
    				"	<occupation>>程序员</occupation>\r\n" + 
    				"</User>\r\n" + 
    				"";
    		DOMParsingXml(xml);
    	}
    	public static void DOMParsingXml(String xml) {
    		try {
    			byte[] b=xml.getBytes();
    			InputStream inp=new ByteArrayInputStream(b);
    			DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
    			DocumentBuilder builder=factory.newDocumentBuilder();
    			Document doc=builder.parse(inp);
    			NodeList nl=doc.getElementsByTagName("User");
    			for (int i = 0; i < nl.getLength(); i++) {
    				System.out.println("country:" + doc.getElementsByTagName("city").item(i).getAttributes().getNamedItem("country").getNodeValue());
    				System.out.println("city:  " + doc.getElementsByTagName("city").item(i).getFirstChild().getNodeValue());
    				System.out.println("name:  " + doc.getElementsByTagName("name").item(i).getFirstChild().getNodeValue());
    				System.out.println("age:  " + doc.getElementsByTagName("age").item(i).getFirstChild().getNodeValue());
    				System.out.println("sex:  " + doc.getElementsByTagName("sex").item(i).getFirstChild().getNodeValue());
    				System.out.println("occupation:  " + doc.getElementsByTagName("occupation").item(i).getFirstChild().getNodeValue());
    			}
    		} catch (Exception e) {
    			System.out.println(e.getMessage());
    		}
    		
    	}
    }

            可以看到DOM解析xml文件是可以得到xml的属性值的,但是这样解析的xml有一个问题,就是当标签里的值为空的时候,解析xml文件就会报错为:java.lang.NullPointerException(空指针异常),那么我们需要在解析值可能为空的标签的时候加一次判断,是否为标准的dom格式,如果不是,则赋值为空(null),如下所示:

    if (标签名 instanceof Element) {
         //则为标准形式,可以取到值
    }else{
         //在此处赋值为空             
    }

    运行这个程序,可以看到控制台输入结果为:

    展开全文
  • Android Dom解析XML

    2017-07-27 14:52:11
    Android使用Dom方式解析XML,虽然xml文件太大时不建议用dom方式解析,但是如果文件比较小,也不失为一种选择。项目中xml放在assets文件夹下,view绑定使用butterknife
  • DOM解析XML文档步骤

    千次阅读 2017-06-20 21:12:27
    //导入的包 import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException;...import org.w3c.dom.Document; import org.

     //导入的包

    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.Node;
    import org.w3c.dom.NodeList;
    import org.xml.sax.SAXException;




    //得到DOM解析器的工厂实例

            DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();
            //通过DOM工厂创建DOM解析器
            DocumentBuilder dombuilder=domfac.newDocumentBuilder();
            //得到要解析的XML文档的输入流
            InputStream is=new FileInputStream("bin/libracy.xml");
            //解析XML文档的输入流
            Document doc=dombuilder.parse(is);
            //得到XML文档的节点
            Element root=doc.getDocumentElement();
            //得到节点的子节点
            NodeList books=root.getChildNodes();
            //循环输出
            for(int i=0;i<books.getLength();i++)
            {
                //返回指定位置的Node对象
                Node book=books.item(i);
                String email=book.getAttributes().getNamedItem("email").getNodeValue();

                System.out.println(email);

           //遍历子节点
                for(Node node=book.getFirstChild();node!=null;node=node.getNextSibling())
                {
                    if(node.getNodeName().equals("name")){
                        String name=node.getNodeValue();
                        String name1=node.getFirstChild().getNodeValue();
                        System.out.println(name);
                        System.out.println(name1);
                    }
                    if(node.getNodeName().equals("price")){
                        String price=node.getFirstChild().getNodeValue();
                        System.out.println(price);
                    }
                }

            }

       //


    展开全文
  • DOM解析XML

    2016-10-05 20:01:43
    DOM解析XML
  • XML应用开发单元设计 常州信息职业技术学院 第 PAGE 6 页 共 NUMPAGES 6 页 XML应用开发课程教学单元设计 单元六 使用DOM解析XML文档 授课教师 XML课程组 授课班级: 学时8 教学条件 软件开发平台和设计平台投影设备...
  • java 中用dom解析xml的经典入门级文档 前言 用Java解析XML文档最常用的有两种方法使用基于事件的XML简单API Simple API for XML称为SAX和基于树和节点 的文档对象模型 Document Object Module称为DOMSun公司提供了...
  • XML解析(二),DOM解析XML

    千次阅读 2015-12-05 13:56:24
    上篇文章向大家介绍了SAX解析XML,为了这篇文章理解起来更加方便,所以还没看过SAX解析XML文章的,请戳这【XML解析(一)】SAX解析XML ,这次给大家带来XML解析系列之DOM解析XML 一、概述 DOM,擦,这什么鬼,肯定又...
  • python dom解析xml 总结

    千次阅读 2016-06-24 11:22:09
    一、xml.dom 解析XML的API描述 minidom.parse(filename) 加载读取XML文件 doc.documentElement 获取XML文档对象 node.getAttribute(AttributeName) 获取XML节点属性值 node.getElementsByT
  • android Dom解析xml文件

    2012-12-24 08:37:20
    包括android代码实例以及个人对Dom解析xml文件的总结文档。
  • java解析xmldom解析,jsoup解析,两种不同方式的解析,完整项目
  • 背景:解析天气预报的xml文件,在模拟器显示 解析前准备 layout目录下weather.xml 需要解析的文件:raw目录下的weather1.xml 20℃/30℃ 晴天多云 上海 80 1级 26℃/32℃ 晴天 北京 98 3级 15℃/...
  • DOM解析XML 创建XML

    2016-07-22 15:47:32
    DOM解析XML 创建XML
  • Oracle xmldom解析xml入参

    2013-12-11 09:13:39
    完整的Oracle xmldom解析xml入参,经过测试,可以解析,成功入到数据表中。
  • android为我们提供了多种解析方式,DOM解析,代码操作简单,一直为解析xml文件的一个不错的选择
  • 本篇文章介绍了,在java中使用dom解析xml的示例分析。需要的朋友参考下
  • 使用DOM解析XML文件

    千次阅读 2016-08-06 16:27:34
    首先写了一个xml文件 c# 张三 1990 60 ...Dom解析xml文件 package com.edu.xynu; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.par
  • Python使用xml.dom解析xml.pdf
  • XML 文档对象模型定义访问和操作XML文档的标准方法。本资源有下面四个文档:DOM XML教程/DOM参考手册/DOM解析XML
  • DOM解析XML时换行和空格

    千次阅读 2017-12-15 12:39:36
    今天用DOM解析xml时,出现#Text的空行,原来是编写的xml文档中的空格与换行导致的。
  • java学习笔记——使用DOM解析XML和使用SAX解析XML

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 118,630
精华内容 47,452
关键字:

dom解析xml