1

我有以下 xml 文件:

<?xml version="1.0" encoding="UTF-8"?>

<root>
    <eq1>-3.874999999999* Math.pow(x, 4.0) + 48.749999999993* Math.pow(x, 3.0)</eq1>
    <eq2>-0.166666666667* Math.pow(x, 4.0) + 2.166666666667* Math.pow(x, 3.0)</eq2>
</root>

我想解析这两个方程并将它们放在变量中以进行进一步计算。我目前使用的方法是解析它们并将它们放在一个字符串中,但它不起作用,因为我需要使用方程式执行计算。

有没有更好的方法可以解决这个问题?提前致谢。

4

2 回答 2

2

您可以使用 JAXB 将 XML 文件解组为具有这些字段的自定义对象。

您的对象可能看起来像:

@XmlRootElement
public class Equations {

    String eq1;
    String eq2;

    // create getters and setters as well
    // and put the @XmlElement annotation on the setters
}

然后从 Equations 对象中使用它们。(equations.getEq1()例如);

这是一个非常简单快速的 JAXB 介绍:http ://www.mkyong.com/java/jaxb-hello-world-example/

关于方程式的执行,一种方法是解析字符串并查看您拥有哪些指令和数字并将它们放在堆栈上,然后当所有内容都被解析后,执行操作(您将在堆栈上获得数字和操作)。也许需要做更多的工作,但这绝对是解决问题的有趣方式。

于 2012-04-11T14:35:24.680 回答
0

试试BeanShell评估器:

import bsh.EvalError;
import bsh.Interpreter;

public class BeanShellInterpreter {

  public static void main(String[] args) throws EvalError {

    Interpreter i = new Interpreter();  // Construct an interpreter
    i.set("x", 5);
    // Eval a statement and get the result
    i.eval("eq1 = (-3.874999999999* Math.pow(x, 4.0) + 48.749999999993* Math.pow(x, 3.0))");
    System.out.println( i.get("eq1") );
  }
}
于 2012-04-11T14:03:35.167 回答