会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132808个问题
JAVA 全系列/第一阶段:JAVA 快速入门/JAVA入门和背景知识 36016楼
JAVA 全系列/(旧的隐藏)第八阶段:电商高级项目_架构/编码/电商ego-实现SSO单点登录 36019楼
Python 全系列/第二十八阶段:Hadoop 分布式文件系统:HDFS(扩展)/Hadoop 高可用集群及java API 36020楼
Python 全系列/第二阶段:Python 深入与提高/GUI编程(隐藏) 36023楼

package DOM方式;


import java.io.IOException;


import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException;


import org.w3c.dom.Document;

import org.w3c.dom.NamedNodeMap;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import org.xml.sax.SAXException;





public class TesTDDMParse {

public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {

//(1) 创建一个DocumentBuilderFactory的对象

DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();

//(2)创建DocumenyBuilder对象

DocumentBuilder db=dbf.newDocumentBuilder();

//(3)通过DocumentBuilder的parse(. . .)方法得到Document对象

Document doc=db.parse("book.xml");

//(4)通过getElementsByTagName(. . .)方法获取到节点的列表

NodeList bookList=doc.getElementsByTagName("book");

System.out.println(bookList.getLength());

//(5)通过for循环遍历,每一个节点

for(int i=0; i<bookList.getLength();i++) {

//(6)得到每一个节点的属性和属性值

Node book=bookList.item(i);

NamedNodeMap attrs=book.getAttributes(); //得到属性的集合

//遍历每一个属性

for(int j=0;j<attrs.getLength();j++){

//得到每一个属性

Node id=attrs.item(j);

System.out.println("属性的名称"+id.getNodeName()+"\t"+id.getNodeValue());

}

}

System.out.println("\n每个节点的名称和节点的值");

//(7)得到每个节点名和节点值

for(int i=0;i<bookList.getLength();i++){

//得到每一个book节点

Node book=bookList.item(i);

NodeList subNode=book.getChildNodes();

//使用for循环遍历每一个book的子节点

for(int j=0;j<subNode.getLength();j++) {

Node childNode=subNode.item(j);

//System.out.println(childNode.getNodeName());

short type=childNode.getNodeType();//获取节点的类型

if(type==childNode.getNodeType()) {

System.out.println("节点的名称:"+childNode.getNodeName()+"\t"+childNode.getTextContent());

}

}

}

}

}



这是books

<?xml version="1.0" encoding="UTF-8"?>

<books>

<book id="1001">

<name>Java开发</name>

<author>张小三</author>

<price>98.5</price>

</book>

<book id="1002">

<name>李四</name>

<author>Java</author>

<price>99.2</price>

</book>

</books>



这是错误

Exception in thread "main" java.io.FileNotFoundException: D:\java\第二阶段\XML技术\books.xml (系统找不到指定的文件。)

at java.base/java.io.FileInputStream.open0(Native Method)

at java.base/java.io.FileInputStream.open(FileInputStream.java:213)

at java.base/java.io.FileInputStream.<init>(FileInputStream.java:155)

at java.base/java.io.FileInputStream.<init>(FileInputStream.java:110)

at java.base/sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:86)

at java.base/sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:184)

at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:654)

at java.xml/com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:150)

at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:860)

at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824)

at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)

at java.xml/com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:246)

at java.xml/com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)

at java.xml/javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:178)

at DOM方式.TesTDDMParse.main(TesTDDMParse.java:25)




blob.png



JAVA 全系列/第二阶段:JAVA 基础深化和提高/XML 技术(旧) 36025楼

老师您好,我在测试以下代码后,columnName和value都有值,也将bean添加到了list集合中,为什么打印list集合却没有任何内容,也不报错呢?

代码区:

public <T> List<T> find(String sql, Object[] param, Class<T> clazz) {
		
		Connection conn = JdbcUtil.getConnection();
		PreparedStatement pres = null;
		ResultSet res = null;
		
		//这个集合中添加T类型表中的内容
		List<T> list = new ArrayList<T>();
		
		try {
			pres = conn.prepareStatement(sql);
		
			if(param != null) {
				for (int i = 0; i < param.length; i++) {
					pres.setObject(i+1, param[i]);
				}
			}
			
			//执行sql语句,并返回ResultSet对象
			res = pres.executeQuery();
			
			//获取该类对象,从中获取表中列名
			ResultSetMetaData rsmd = res.getMetaData();
			int count = rsmd.getColumnCount();
	
			//执行循环,创建T类型的对象,并存入list集合中
			while(res.next()) {
				//通过反射获取该表的类型
				T bean = clazz.newInstance(); //这个就相当于Departments d = new Departments();
				
				for (int i = 0; i < count; i++) {
					
					//获取到第一行数据的列名
					String columnName = rsmd.getColumnName(i+1);
System.out.print(columnName + "\t");	
					//获取第一行第一列的值
					Object value = res.getObject(columnName);
System.out.println(value);	
					//使用BeanUilts工具包,给T对象中的成员变量赋值
					BeanUtils.setProperty(bean, columnName, value);
				}

				list.add(bean);
			}
			
for (T t : list) {
    System.out.println(t.toString());
}

System.out.println(list);

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			
			JdbcUtil.close(conn, pres, res);
		}
		return list;
	}
	
以下是Departments类的toString()方法:

public String toString() {
	return department_id + "\t" + department_name + "\t" + location_id;
}

 运行截图:

BaseDao问题.gif

JAVA 全系列/第三阶段:数据库编程/JDBC技术(旧) 36028楼
Python 全系列/第二阶段:Python 深入与提高/游戏开发-坦克大战 36030楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637