2016-06-08 29 views
0

我想从使用创建ODEs(.txt),变量(.txt)的3个文件的发布的可执行文件.jar文件(Eclipse)中的COPASI创建的XML文件中提取参数数据。 csv)和参数(.csv)。这适用于提供的示例XML文件,但当我使用自己的数据时会创建一个空白的.csv par(paramater)文件(打印列标题)。没有显示错误,ODE和变量文件被正确写入。这是用于提取参数数据的代码:从XML文件中提取参数数据

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> 

没有人有任何建议,以解决这个?

谢谢你的时间!

+0

我以编程方式阅读testng.xml。也许相同的情况下你有.http://stackoverflow.com/questions/35700078/how-to-run-testng-tests-pointed-to-a-jar – gihan

回答

0

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

要处理的示例文件,你必须使用/listOfParameters,而是为你的XML,您需要使用/反应/ kineticLaw/listOfParameters

如果你不能改变的XPath expresion那么你必须建立相同的xml。