还是JAVA的问题,这次是XML。。

  • c
    cc0128
    我自己写了一个xml.
    <test>
    <name>
    test
    </name>
    <class>
    other.TestClass
    </class>
    </test>
    <test>
    <name>
    test1
    </name>
    <class>
    other.TestClass1
    </class>

    </test>
    大概是这样拉。。
    我的工程在other包里面有个TestClass的类。
    我想通过jdom将XML读出来。然后自动分析class属性里面字符,调用TestClass/TestClass1类的Start()方法。
    怎么整。。。

    [本帖最后由 cc0128 于 2008-1-17 22:21 编辑]
  • 7
    788414
    去csdn吧
  • c
    cc0128
    csdn不喜欢。。喜欢tg。。。
  • i
    iorilu
    这个要用到反射,lz自己研究下:D
  • c
    cc0128
    谢谢。。
  • l
    leonWong
    如果需要的话,给你段代码。:D
  • l
    lvcha
    你写的就不是xml。。

    xml是单根的!
  • k
    kiler
    老大学学用google吧,这里不是技术论坛。
  • c
    cc0128
    谢谢大家鸟
  • c
    cc0128
    要啊要啊。有例题最好~~
  • l
    leonWong
    ----------------------------XML文件---------------------------------
    <?xml version="1.0" encoding="UTF-8"?>

    <root>
    <test>
    <name>test</name>
    <class>other.TestClass</class>
    </test>
    <test>
    <name>test1</name>
    <class>other.TestClass1</class>
    </test>
    </root>
    ----------------------------XML文件---------------------------------


    ----------------------------XML解析用类---------------------------
    package javaappdemo;

    import java.util.Iterator;
    import org.dom4j.Element;
    import org.dom4j.Document;
    import org.dom4j.io.SAXReader;
    public class ReadXml {
    public static String getType(String name) {
    try {
    SAXReader xmlReader = new SAXReader();
    Document doc = xmlReader.read("newXMLDocument.xml");
    Element root = doc.getRootElement();
    Iterator it = root.elementIterator();
    while(it.hasNext()) {
    Element sub = (Element) it.next();
    Iterator itsub = sub.elementIterator();
    while (itsub.hasNext()) {
    Element sub2 = (Element) itsub.next();
    if("name".equals(sub2.getName())){
    if(!name.equals(sub2.getData())){
    break;
    }
    }
    if("class".equals(sub2.getName())){
    return sub2.getData().toString();
    }
    }
    }
    } catch (Exception e) {
    return "";
    }
    return "";
    }
    }

    ----------------------------XML解析用类---------------------------

    ----------------------------TESTCLASS--------------------------
    package other;

    public class TestClass{
    public static void start(){
    System.out.println("TestClass started!");
    }
    }

    ----------------------------TESTCLASS--------------------------

    ----------------------------TESTCLASS1--------------------------
    package other;

    public class TestClass{
    public static void start(){
    System.out.println("TestClass started!");
    }
    }
    ----------------------------TESTCLASS1--------------------------


    ----------------------------Main--------------------------
    package javaappdemo;

    import java.lang.reflect.Method;

    public class Main {
    public static void main(String[] args) {
    try {
    String NodeName = "test1";
    String ClassName = ReadXml.getType(NodeName);
    Class className = Class.forName(ClassName);
    Method method = className.getMethod("start", new Class[0]);
    method.invoke(null, new Object[0]);
    } catch (Exception ex) {
    System.out.println("反射失败: " + ex.getMessage());
    }
    }
    }
    ----------------------------Main--------------------------