【问题标题】:How to convert XML(attributes) file into a java(classes) file如何将 XML(属性)文件转换为 java(类)文件
【发布时间】:2010-07-26 10:13:19
【问题描述】:

我想编写一个 java 代码来读取输入的 XML 文件并生成其等效的 Java 代码。

enter code here

<CodeMarkers classname="CodeGenerator" access="public">

<MethodMarker javadoc="Compares two strings" name="stringComparator" access="private" static="no" return="boolean">
    <Input name="str1" notnull="true"/>
    <Input name="str2" notnull="false"/>
    <MethodVariable name="success" type="boolean" initvalue="false"/>
    <JavaCode>
        <![CDATA[
        System.out.println("Executing comparator");
        if (str1.equals(str2)) success = BOOLEAN.TRUE;
        return success;
        ]]>
    </JavaCode>
</MethodMarker>

<MethodMarker javadoc="Database look for an employee id" name="getEmployeeId" access="public" static="yes" return="int">
    <Input name="employeeName" notnull="true"/>
    <MethodVariable name="empId" type="int"/>
    <DBInit>
        <SQLCode>
            <![CDATA[
            empId = SELECT emp_id FROM test.employee where emp_id = empId;
            return empId;
            ]]>
        </SQLCode>
    </DBInit>
</MethodMarker>

我需要写一个java代码把上面的XML代码转换成java代码 即
第一行输出的java代码应该是public class CodeGenerator{}

enter code here
                  <![CDATA[
            empId = SELECT emp_id FROM test.employee where emp_id = empId;
            return empId;
            ]]>

我无法将 CDATA 下的行按原样使用方法

谢谢 阿瑟莉亚

【问题讨论】:

  • 如果您能详细说明您的问题,将会很有帮助。你的目标是什么?也许您可以提供示例输入和所需的输出?
  • 目标是在运行时创建一个类,而不是编译它并使用它。输入是类的 XML 定义,输出是工作类,可以初始化并使用它。
  • 感谢 Vash 为我更清楚地提出问题我能够将 XML 文件中的大多数行转换为 下的行除外是的。

标签: java xml


【解决方案1】:

Q2:“如何获取

为了检索字符数据(CDATA)你做这样的事情,

导入 org.w3c.dom.Element;

 public static String getCharacterDataFromElement(Element e) {
    Node child = e.getFirstChild();
    if (child instanceof CharacterData) {
      CharacterData cd = (CharacterData) child;
      return cd.getData();
    }
    return "";
  } 

【讨论】:

  • Thanx Vash,照你说的试试看
  • @user333521,很酷,但是对于未来,如果您接受一些答案而不是设置为已接受,这将从未回答的顶部删除问题。
【解决方案2】:

应该如何创建类,XML 由您决定。您需要某种能够正确解析这些设置并创建 java 文件的工厂。

您需要的是编译并将类文件加载到您的“程序”中。

编译提示: Options for dynamic compilation in Java 5

这可能有助于加载: http://www.javaworld.com/javaworld/jw-06-2006/jw-0612-dynamic.html

【讨论】:

    【解决方案3】:

    如果我理解正确,我会:

    1. 使用 XML 解析器读取 XML 定义(从这里开始:http://java.sun.com/javase/6/docs/api/javax/xml/parsers/DocumentBuilderFactory.html)
    2. 使用您选择的模板引擎来创建源代码(这可能是一个很好的候选http://www.stringtemplate.org/)
    3. 使用java编译器编译生成的代码(http://java.sun.com/javase/6/docs/api/javax/tools/JavaCompiler.html)
    4. 将生成的代码加载到 JVM (http://www.javaworld.com/javaworld/jw-06-2006/jw-0612-dynamic.html?page=3)

    【讨论】:

      猜你喜欢
      • 2017-12-25
      • 2019-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-26
      • 2013-11-05
      相关资源
      最近更新 更多