XML解析数据java

时间:2012-04-11 13:54:11

标签: java xml parsing xml-parsing

我有以下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>

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

我可以使用更好的方法来解决这个问题吗?提前谢谢。

2 个答案:

答案 0 :(得分: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/

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

答案 1 :(得分: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") );
  }
}