问题描述
- 求XML解析成JAVA对象工具
-
系统中有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);
解决方案
解决方案二:
我有解析xml和json的工具类,但是在公司电脑上,如果有需要可以密我,工具类只做参考。