题:
三.plugin.xml
<?xml version="1.0" encoding="UTF-8" ?>
<plugin name="HelloPlugin">
<author>
<person>LiTian</person>
<email>litian@huawei.com</email>
<site>http://www.huawei.com</site>
</author>
<item>
<key>plugin</key>
<value>com.huawei.HelloPlugin</value>
</item>
<item>
<key>version</key>
<value>1.0</value>
</item>
<item>
<key>date</key>
<value>2009-04-25</value>
</item>
</plugin>
四.Author.java
package com.chinasoft.exam.demo;
public class Author {
private String person;
private String email;
private String site;
public String getPerson() {
return person;
}
public void setPerson(String person) {
this.person = person;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getSite() {
return site;
}
public void setSite(String site) {
this.site = site;
}
}
五.Plugin.java
package com.chinasoft.exam.demo;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
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 Plugin {
private Author author = new Author();
private ArrayList items = new ArrayList();
private Map<String, String> item;
public Author getAuthor() {
return author;
}
public void setAuthor(Author author) {
this.author = author;
}
public ArrayList getItems() {
return items;
}
public void setItems(ArrayList items) {
this.items = items;
}
public Map<String, String> getItem() {
return item;
}
public void setItem(Map<String, String> item) {
this.item = item;
}
public Plugin call(String name, int age) {
// 测试参数
System.out.println("name:" + name + "\t age:" + age);
File file = new File("src/com/chiansoft/exam/properties/plugin.xml");
try {
DocumentBuilderFactory domfac = DocumentBuilderFactory
.newInstance();
DocumentBuilder dombuilder = domfac.newDocumentBuilder();
Document document = dombuilder.parse(file);
Element root = document.getDocumentElement();
NodeList nodeList = root.getChildNodes();
if (nodeList != null) {
for (int i = 0; i < nodeList.getLength(); i++) {
if (nodeList.item(i).getNodeType() == Node.ELEMENT_NODE
&& nodeList.item(i).getNodeName().equals("item")) {
item = new HashMap<String, String>();
String key = null;
String value = null;
for (Node node = nodeList.item(i).getFirstChild(); node != null; node = node
.getNextSibling()) {
if (node.getNodeType() == Node.ELEMENT_NODE
&& node.getNodeName().equals("key")) {
key = node.getFirstChild().getNodeValue();
}
if (node.getNodeType() == Node.ELEMENT_NODE
&& node.getNodeName().equals("value")) {
value = node.getFirstChild().getNodeValue();
}
}
item.put(key, value);
items.add(item);
} else if (nodeList.item(i).getNodeType() == Node.ELEMENT_NODE
&& nodeList.item(i).getNodeName().equals("author")) {
for (Node node = nodeList.item(i).getFirstChild(); node != null; node = node
.getNextSibling()) {
if (node.getNodeType() == Node.ELEMENT_NODE
&& node.getNodeName().equals("person")) {
String person = node.getFirstChild()
.getNodeValue();
author.setPerson(person);
}
if (node.getNodeType() == Node.ELEMENT_NODE
&& node.getNodeName().equals("email")) {
String email = node.getFirstChild()
.getNodeValue();
author.setEmail(email);
}
if (node.getNodeType() == Node.ELEMENT_NODE
&& node.getNodeName().equals("site")) {
String site = node.getFirstChild()
.getNodeValue();
author.setSite(site);
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return this;
}
}
六.Operate.java
package com.chinasoft.exam.demo;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Operate
{
private Plugin plugin = null;
//反射知识
public void setPlugin()
{
Object pluginObject = null;
try
{
Class<?> classDefine = Class.forName("com.chinasoft.exam.demo.Plugin");
pluginObject = classDefine.newInstance();
//方式一:适用于一个参数
/*Method[] methods = classDefine.getDeclaredMethods();
for(int i=0;i<methods.length;i++)
{
Method method = methods;
String methodName = method.getName();
if(methodName.equals("call"))
{
plugin = (Plugin)method.invoke(pluginObject, "zhangbai");
}
}*/
//方式二:适用于多个参数
Class[] paramTypes = new Class[]{String.class,int.class};//参数类型数组
Object[] params = new Object[]{"zhangbai",23};//参数值数组
Method method = classDefine.getDeclaredMethod("call",paramTypes);//获取方法实例
plugin = (Plugin)method.invoke(pluginObject, params);//调用call方法并返回Plugin实例
}
catch (Exception e)
{
e.printStackTrace();
}
}
public void doTest()
{
ArrayList<Object> items = plugin.getItems();
Iterator<Object> iterator = items.iterator();
for (int i = 0; i < items.size(); i++)
{
if (iterator.hasNext())
{
Map<String,String> item = (Map<String,String>) iterator.next();
Set set = item.entrySet();
Iterator keys = set.iterator();
for (int j = 0; j < set.size(); j++)
{
if (keys.hasNext())
{
Object key = keys.next();
if (key != null)
{
System.out.println(key);
}
}
}
}
}
Author author = plugin.getAuthor();
String person = author.getPerson();
String email = author.getEmail();
String site = author.getSite();
System.out.println("person:"+person+" \t email:"+email+" \t site:"+site);
}
public static void main(String[] args) {
Operate operate = new Operate();
operate.setPlugin();
operate.doTest();
}
}
分享到:
相关推荐
本综合编程训练主要针对C语言的新手,旨在帮助初学者掌握基本的编程概念和技能,为后续深入学习和实践打下坚实的基础。 1. **基础语法**:C语言的基础包括变量、数据类型(如int、char、float等)、运算符(算术、...
这个名为“MATLAB综合编程5”的压缩包显然包含了多个资源,帮助用户深入理解和掌握MATLAB的各个方面。以下是根据提供的文件名解析出的相关知识点: 1. **MATLAB命令大全.pdf**:这本书可能是MATLAB所有内置函数和...
包含: MATLAB 5.X程序设计语言.pdf、 MATLAB 5.X入门与应用.pdf、 MATLAB 5.X应用与技巧.pdf、 MATLAB 编程风格指南.pdf、 MATLAB编程.pdf、 MatLab工程数学应用.pdf、
"2022年数控车床综合编程实例解析" 本资源是关于数控车床综合编程实例的解析,共14张PPT。该资源详细介绍了数控车床编程的基础知识和实践操作,涵盖了数控车床编程的基本概念、编程语言、编程步骤、刀具选择、工件...
本资源“MATLAB综合编程1”提供了对MATLAB 5.X版本的深入理解和实践指导,包括三个主要文档:“MATLAB5.X程序设计语言.pdf”、“MATLAB5.X入门与提高.pdf”以及“MATLAB5手册.pdf”。 “MATLAB5.X程序设计语言.pdf...
《三菱GX Works2 PLC综合编程软件详解》 三菱GX Works2是一款专为三菱PLC设计的集成编程软件,尤其在中文环境下,它为用户提供了友好的界面和强大的功能,极大地提升了编程效率。这款软件适用于Windows 10操作系统...
《数控车床综合编程实例解析》 在数控车削加工中,编程是至关重要的环节,它直接影响着加工精度和效率。本实例通过两个具体的零件加工案例,深入解析了数控车床的综合编程方法。 首先,我们来看一个复杂轴类零件的...
【第七章-复杂零件综合编程实例】主要涵盖了在数控加工中如何对复杂零件进行编程,以实现面铣削、外形铣削、挖槽铣削、钻孔和雕刻文字等多种加工工艺。这一章节通过一个具体的复杂零件编程模型进行讲解,旨在帮助...
【综合编程训练】是计算机科学中的一个重要环节,它旨在通过实际项目来提升学生的编程技能和问题解决能力。在这个PPT学习教案中,我们看到的是一个关于五子棋游戏程序的综合实例,它详细介绍了从软件开发的初始阶段...
ASIC芯片设计静态时序分析(STA)验证综合编程规范IC设计与方法等文档资料: ASIC Guide from Atmel.pdf asic_design_guide.pdf ASIC中的异步时序设计.doc ASIC设计教程.pdf asynchronous signals in a synchronous ...
《数控车床综合编程实例》 本篇内容主要讲解了两个数控车床编程的实例,分别涉及轴类零件和盘类零件的加工。在数控车床上进行编程时,需考虑工件材质、毛坯类型、刀具选择、切削用量、装夹方式等多个因素,以确保...
《数控车床综合编程》的学习教案涵盖了多个关键知识点,这些知识点对于理解和操作数控车床至关重要。以下是详细解析: 1. **子程序的调用与结束**: - 子程序的番号通常以“%xxxx”表示,是调用子程序的入口地址,...
浙大中控DCS系统AdvanTrol Pro软件培训-编程综合编程案例 以下是根据给定的文件生成的相关知识点: TIMER 定时器应用 * 定时器的工作原理:定时器是一种特殊的计时器模块,用于实现定时控制和延迟控制。 * ...
【C语言综合编程训练剖析】的学习教案主要涵盖了C语言编程的基本概念、程序构成、开发流程以及几个具体的实例分析。在C语言编程中,程序通常由预编译命令、函数等部分组成,遵循自上向下、逐步细化、模块化设计和...
Java GUI综合编程实验报告
一个c语言综合编程训练文档,综合训练的PPT
数控车床综合编程实例解析.pptx
数控铣床综合编程实训.pptx