从XML文件中提取参数数据

时间:2016-06-08 15:12:54

标签: java xml eclipse

我尝试使用已发布的可执行.jar文件(http://www.comp.nus.edu.sg/~rpsysbio/pada)从Eclipse中的COPASI创建的XML文件中提取参数数据,该文件创建3个ODE文件(.txt),变量(。 csv)和参数(.csv)。这适用于提供的示例XML文件,但是当我使用自己的数据时,会创建一个空白的.csv par(paramater)文件(打印列标题)。没有显示错误,并且正确写入了ODE和变量文件。这是用于提取参数数据的代码:

void printPar(String outdir){
try{
    FileOutputStream outfile=new FileOutputStream(outdir+"./par.csv");
    PrintWriter out=new PrintWriter(outfile);
    // header
    out.println("NAME,INIT,LowerBound,UpperBound,BoundNum,BoundSize");
    for (int i=0;i<model.getNumParameters();i++){
    Parameter p=model.getParameter(i);
    //out.println(convert(p.getId())+","+p.getValue()+",,,");
    double x=p.getValue();
    if(x<1)
        out.println(convert(p.getId())+","+p.getValue()+",0,1,5");
    else if(x<100)
        out.println(convert(p.getId())+","+p.getValue()+",0,100,5");
    else
        out.println(convert(p.getId())+","+p.getValue()+",0,10000,5");
    }

    out.flush();
} catch(IOException e){
    e.printStackTrace();
}
} 

我可以在示例和我自己的XML文件之间看到的唯一区别是,在示例文件中,参数与反应类似地单独列出:

    <listOfParameters>
        <parameter id="parameter_1" name="k1" value="0.1" />
        <parameter id="parameter_2" name="k2" value="0.1" />
        <parameter id="parameter_3" name="k3" value="0.3" />
    </listOfParameters>

而在我的文件中,列出了每个反应的参数,例如:

</reaction>
...
      <listOfParameters>
        <parameter id="k1" name="k1" value="0.0008"/>
        <parameter id="k2" name="k2" value="1.05e-06"/>
      </listOfParameters>
    </kineticLaw>
  </reaction>

有没有人有任何关于解决这个问题的建议?

感谢您的时间!

1 个答案:

答案 0 :(得分:0)

如果xml文件的结构不同,则必须使用不同的XPath表达式来提取数据。

要处理示例文件,您必须使用 / listOfParameters ,但对于您的xml,您需要使用 / reaction / kineticLaw / listOfParameters

如果无法更改XPath表达式,则必须构建相同的xml。