Java反射——读取XML文件,创建对象
读取XML文件,创建对象
config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<!-- Cat类是个内部类 -->
<bean id="id1" class="ahjava.p07reflect.Cat">
<property name="username" value="英短" />
</bean>
</beans>
import java.io.*;
import java.lang.reflect.Constructor;
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 T35读取XML构造对象 {
private static void get构造方法(String className, String pa1) throws Exception {
Class<?> c = Class.forName(className);
// 获取构造
Constructor<?> constr = c.getConstructor(String.class);
// 实例化对象
Object o = constr.newInstance(pa1);
System.out.println(o);
}
public static void main(String args[]) {
/**
* 解析XML文件
*/
Element element = null;
// 可以使用绝对路劲
File f = new File("src/ahjava/config.xml");
// documentBuilder为抽象不能直接实例化(将XML文件转换为DOM文件)
DocumentBuilder db = null;
DocumentBuilderFactory dbf = null;
try {
dbf = DocumentBuilderFactory.newInstance();
db = dbf.newDocumentBuilder();
Document dt = db.parse(f);// 得到一个DOM
element = dt.getDocumentElement();
String nodeName = element.getNodeName();
System.out.println("根元素:" + nodeName);
// 根元素下的所有子节点
NodeList childNodes = element.getChildNodes();
// 遍历这些子节点
for (int i = 0; i < childNodes.getLength(); i++) {
// 获得每个对应位置i的结点
Node node1 = childNodes.item(i);
if ("bean".equals(node1.getNodeName())) {
String sClass = node1.getAttributes().getNamedItem("class").getNodeValue();
System.out.println(sClass);
// 获得<Accounts>下的节点
NodeList nodeDetail = node1.getChildNodes();
// 遍历<Accounts>下的节点
for (int j = 0; j < nodeDetail.getLength(); j++) {
// 获得<Accounts>元素每一个节点
Node detail = nodeDetail.item(j);
if ("property".equals(detail.getNodeName())) {
String sV = detail.getAttributes().getNamedItem("value").getNodeValue();
System.out.println("property: " + sV);
get构造方法(sClass, sV);
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
根元素:beans
ahjava.p07reflect.Cat
property: 英短
Cat构造:英短
ahjava.p07reflect.Cat@5ca881b5
Java反射——读取XML文件,创建对象的更多相关文章
- java Domj4读取xml文件
先概括,再以代码形式给出. 获取节点: Iterator Element.nodeIterator(); //获取当前标签节点下的所有子节点 获取 标签: Element Document.get ...
- java Domj4读取xml文件加强训练案例
需求:给出一段xml文件.要求按照鸳鸯输出. xml文件代码如下: <?xml version="1.0" encoding="utf-8"?> & ...
- Java如何读取XML文件 具体实现
转载自:http://www.jb51.net/article/44338.htm import java.io.*; import javax.xml.parsers.DocumentBuilder ...
- Java获取路径方法&相对路径读取xml文件方法
(1).request.getRealPath("/");//不推荐使用获取工程的根路径 (2).request.getRealPath(request.getRequestURI ...
- JAVA读取XML文件数据
XML文档内容如下: <?xml version="1.0" encoding="UTF-8"?> <root> <field t ...
- java 读取XML文件作为配置文件
首先,贴上自己的实例: XML文件:NewFile.xml(该文件与src目录同级) <?xml version="1.0" encoding="UTF-8&quo ...
- java读取xml文件报“org.xml.sax.SAXParseException: Premature end of file” .
背景:java读取xml文件,xml文件内容只有“<?xml version="1.0" encoding="UTF-8"?>”一行 java读取该 ...
- 分享非常有用的Java程序 (关键代码)(六)---解析/读取XML 文件(重要)
原文:分享非常有用的Java程序 (关键代码)(六)---解析/读取XML 文件(重要) XML文件 <?xml version="1.0"?> <student ...
- java读取XML文件的四种方式
java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...
随机推荐
- Jenkins自动化构建PHP实列教程
安装Jenkins 请参考群主的安装教程 进入jenkins,添加SSH server,并且安装gitlab,Generic Webhook Trigger Plugin,GitHub plugin, ...
- MySQL全面瓦解5:数据操作-DML
说明 DML(Data Manipulation Language)数据操作语言,是指对数据库进行增删改的操作指令,主要有INSERT.UPDATE.DELETE三种,代表插入.更新与删除,这是学习M ...
- 样式操作-核心DOM
1.核心DOM 只能操作行内(内嵌)样式-->style里面的所有内容(核心DOM) //麻烦获取 console.log(div.getAttribute("style") ...
- Linux下的django项目02
3.创建user模型 3.1 创建用户模型user 第一步 django-admin startproject syl 第二 在syl下创建apps文件包并标记根源 cd 到apps下并进行以下步骤 ...
- 《Clojure编程》笔记 第1章 进入Clojure仙境
目录 背景简述 第1章 进入Clojure仙境 1.1 基础概念 1.2 常用的一些符号 背景简述 本人是一个自学一年Java的小菜鸡,理论上跟大多数新手的水平差不多,但我入职的新公司是要求转Cloj ...
- 令人惊叹的百度Echarts,大数据分析的必备工具
学习目录 1.可视化面板介绍 1.1技术要点 1.2案例适配方案 1.3页面主体布局2.Echarts(重点) 2.1echarts介绍 2.2echarts体 ...
- 写文档太麻烦,试试这款 IDEA 插件吧!
前言 每次开发完新项目或者新接口功能等,第一件事就是提供接口文档.说到接口文档,当然是用 Markdown 了.各种复制粘贴字段,必填非必填,字段备注,请求返回示例等等.简直是浪费时间哇.所以想到了开 ...
- week01-绪论作业
一.有理数的抽象数据模型 ADT Rational { 数据对象: D={e1,e2|e1,e2属于ElemType类型}//ElemType为自定义的整数集合类型 数据关系: R={<e1,e ...
- 如约而至,.NET 5.0 正式发布
作者:Richard 翻译:精致码农-王亮 原文:http://dwz.win/WFz 说明:文章太长,后面关于 C# 9 语言新特性及平台新特性的部分没有翻译,这部分基本都是代码示例,请直接阅读原文 ...
- SQL Server 常用近百条SQL语句(收藏版)
1. sqlserver查看实例级别的信息,使用SERVERPROPERTY函数 select SERVERPROPERTY ('propertyname') 2. 查看实例级别的某个参数XX的配置 ...