java中调用xml的方法:DocumentBuilderFactory
具体的使用方法如下:
(1)得到 DOM 解析器的工厂实例
DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();
(2)从 DOM 工厂获得 DOM 解析器
DocumentBuilder dombuilder=domfac.newDocumentBuilder();
(3 )把要解析的 XML 文档转化为输入流,以便 DOM 解析器解析它
InputStream is= new FileInputStream("test1.xml");
(4)解析 XML 文档的输入流,得到一个 Document
Document doc=dombuilder.parse(is);
(5)得到 XML 文档的根节点
Element root=doc.getDocumentElement();
(6)得到节点的子节点
NodeList books=root.getChildNodes();
- package com.st.demo;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.InputStream;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.parsers.DocumentBuilderFactory;
- import org.w3c.dom.Document;
- import org.w3c.dom.Element;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
- public class XmlReader {
- public static void main(String[] args) {
- XmlReader reader = new XmlReader();
- }
- public XmlReader(){
- DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();
- try {
- DocumentBuilder domBuilder = domfac.newDocumentBuilder();
- InputStream is = new FileInputStream(new File("D:/test1.xml"));
- Document doc = domBuilder.parse(is);
- Element root = doc.getDocumentElement();
- NodeList books = root.getChildNodes();
- if(books!=null){
- for (int i = 0; i < books.getLength(); i++) {
- Node book = books.item(i);
- if(book.getNodeType()==Node.ELEMENT_NODE) {
- //(7)取得节点的属性值
- String email=book.getAttributes().getNamedItem("email").getNodeValue();
- System.out.println(email);
- //注意,节点的属性也是它的子节点。它的节点类型也是Node.ELEMENT_NODE
- //(8)轮循子节点
- for(Node node=book.getFirstChild();node!=null;node=node.getNextSibling()) {
- if(node.getNodeType()==Node.ELEMENT_NODE) {
- 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);
- }
- }
- }
- }
- }
- }
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- <?xml version="1.0" encoding="GB2312" standalone="no"?>
- <books>
- <book email="zhoujunhui">
- <name>rjzjh</name>
- <price>jjjjjj</price>
- </book>
- </books>
java中调用xml的方法:DocumentBuilderFactory的更多相关文章
- 【Android】java中调用JS的方法
最近因为学校换了新的教务系统,想做一个模拟登陆功能,发现登陆的账号和密码有一个js脚本来进行加密 整理了一下java中执行JS的方法 智强教务 账号 密码 加密方法 var keyStr = &quo ...
- java中调用dll文件的两种方法
一中是用JNA方法,另外是用JNative方法,两种都是转载来的, JNA地址:http://blog.csdn.net/shendl/article/details/3589676 JNativ ...
- 在java中调用python方法
1.http://sourceforge.net/projects/jython/下载jython包,把其中的jython.jar添加到工程目录 示例: 1.摘自:http://blog.csdn.n ...
- 在Java中调用Python
写在前面 在微服务架构大行其道的今天,对于将程序进行嵌套调用的做法其实并不可取,甚至显得有些愚蠢.当然,之所以要面对这个问题,或许是因为一些历史原因,或者仅仅是为了简单.恰好我在项目中就遇到了这个问题 ...
- JAVA如何调用C/C++方法
JAVA如何调用C/C++方法 2013-05-27 JAVA以其跨平台的特性深受人们喜爱,而又正由于它的跨平台的目的,使得它和本地机器的各种内部联系变得很少,约束了它的功能.解决JAVA对本地操作的 ...
- Java中调用c/c++语言出现Exception in thread "main" java.lang.UnsatisfiedLinkError: Test.testPrint(Ljava/lang/String;)V...错误
错误: Exception in thread "main" java.lang.UnsatisfiedLinkError: Test.testPrint(Ljava/lang/S ...
- java中调用js脚本
JDK1.6加入了对Script(JSR223)的支持.这是一个脚本框架,提供了让脚本语言来访问Java内部的方法.你可以在运行的时候找到脚本引擎,然后调用这个引擎去执行脚本.这个脚本API允许你为脚 ...
- 如何在Java中调用Python代码
有时候,我们会碰到这样的问题:与A同学合作写代码,A同学只会写Python,而不会Java, 而你只会写Java并不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方设法“调 ...
- 在Java中调用Python代码
极少数时候,我们会碰到类似这样的问题:与A同学合作写代码, A同学只会写Python,不熟悉Java ,而你只会写Java不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方 ...
随机推荐
- 【前端】【转】JS跨域问题总结
详情见原博客:详解js跨域问题 概念:只要协议.域名.端口有任何一个不同,都被当作是不同的域. 跨域资源共享(CORS) CORS(Cross-Origin Resource Sharing)跨域资源 ...
- EF常用命令行
启用迁移:指定迁移的目录和数据库上下文名称Enable-Migrations -MigrationsDirectory "MigrationsHis" -ContextTypeNa ...
- 2-st学习笔记
2-ST是一种巧妙的建图模式....其实,主要是将互相限制的条件转化为有向图.实现时,将每个点拆成两点,对应这个点的两种取值,然后求强连通分量.由于每个点只能有一种取值,所以若强连通分量中某一个点拆成 ...
- UIButton的文本与图片的布局
UIButton内部文本和图片的布局是我们日常代码中,不可缺少的部分,按钮默认左边图片右边文本,那要实现左边文本,右边图片,我们该怎么解决呢,上面图片,下面文本又该怎么办呢 其实很简单,今天总结下,目 ...
- attr和prop区别
今天写了个小程序,获取input[checked]属性,$('#check1').attr('checked'),结果返回undefined,查询了一番, 如果是具有true和false两个属性值的属 ...
- ximalaya
- java学习笔记----枚举测试题
定义义一个交通灯枚举类,包含红灯.绿灯.黄灯,需要有获得下一个灯的方法,并实现红灯出现5秒之后变成绿灯,绿灯3秒之后变成黄灯,黄灯2秒之后变成红灯,如此循环 public class Test5 { ...
- TC250专场
SRM 623 DIV2 1000pt 题意:给出一个最多50*50的矩阵,每个单元可能为'.'.'P'.'A','.'代表空地,你每次操作可以把一个P或者A拿到空地上,求一个最大的含有相同字符的矩形 ...
- 慕课网__HTML5 存储
application cache 只能更新全部,不能更新单独的文件 在更新后,要重新打开浏览器,缓存才会生效, 不能实时生效
- mac系统安装node
1.node 是通过brew来安装的,所以第一步先安装brew ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebre ...