系统中有N多个XML文件,文件的格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://www.example.org/plugin-config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- 扩展点定义 -->
<extension-point id="com.smart.point1">
<item name="myItme1">
<param name="params1" kind="string" required="true">
<description>参数说明1</description>
</param>
<param name="params2" kind="int" required="false">
<description>参数说明2</description>
</param>
<param name="params3" kind="string">
<description>参数说明3</description>
</param>
<description>ITEM说明1</description>
</item>
<item name="myItme2">
<param name="params1" kind="string" required="true">
<description>参数说明1</description>
</param>
<param name="params2" kind="int">
<description>参数说明2</description>
</param>
<description>ITEM说明2</description>
</item>
<description>扩展点说明</description>
</extension-point>
<!-- 扩展点实现 -->
<extension point="com.smart.point1">
<item name="myItme2">
<param name="params1" value="这里是参数值1"/>
<param name="params2" value="100"/>
</item>
</extension>
<!-- 扩展点实现 -->
<extension point="com.smart.point1">
<item name="myItme2">
<param name="params1" value="henry"/>
<param name="params2" value="500"/>
</item>
</extension>
文件2:
<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://www.example.org/plugin-config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- 扩展点实现 -->
<extension point="com.smart.point1">
<item name="myItme1">
<param name="params1" value="hello"/>
<param name="params3" value="50"/>
</item>
</extension>
说明:
1. XML中存在有两个大类:extension-point(扩展点)和extension(扩展实现)。
2. extension-point(扩展点)节点有ID属性(全局唯一),extension(扩展实现)有point属性(此属性指向前者的ID属性)。
3. 无论是extension-point(扩展点)或extension(扩展实现)节点下,都有多个item子节点,此item节点只有一个name属性。
4. 在extension-point(扩展点)的item节点下,有多个param子节点,此节点有三个属性:name,就是名称,在此item节点中唯一。kind,是指在JAVA中的类型(如:string,int,date...)。required,是指此param是否是必须,默认为false
5. 在extension(扩展实现)的item节点下,也有多个param子节点,分别对应第4点中的param,只是属性只有2个:name,对应第4点中的name属性,value,指此属性的值,类型为第4点中定义的kind。注意:如果第4点中定义的param是required="true",那么此param节点就必须定义,否则可以不写。
6. extension-point(扩展点)中的description节点不需要处理。
要求:
1. 使用JAVA加载并解析所有的XML文件。
2. 提供一个工具类来获取XML文件中的数据。
2.1 如工具类:XMLLoader.java
2.2 通过工具类能获取到所有的扩展点数据:ExtensionPoint[] point = XMLLoader.getExtensionPoint();
2.3 根据扩展点ID获取某个扩展点:ExtensionPoint point = XMLLoader.getExtensionPoint(pointId);
2.4 获取某个扩展点的所有扩展实现:Extension[] extensions = point.getExtensions();
2.5 根据item名称获取扩展实现中的某个扩展实现:Extension extension = point.getExtensions(itemName);