私は現在、代謝物データベース PubChem からデータを要求する必要があるプロジェクトを行っています。Apache の HttpClient を使用しています。私は次のことをしています:
HttpClient httpclient = new DefaultHttpClient();
HttpGet pubChemRequest = new HttpGet("http://pubchem.ncbi.nlm.nih.gov/summary/summary.cgi?cid="
+ cid + "&disopt=SaveXML");
pubChemRequest.getAllHeaders();
System.out.println(pubChemRequest);
HttpResponse response = null;
response = httpclient.execute(pubChemRequest);
HttpEntity entity = response.getEntity();
pubChemInchi = EntityUtils.toString(entity);
問題は、このコードが XML ファイル全体をストリーミングすることです。
<?xml version="1.0"?>
<PC-Compound
xmlns="http://www.ncbi.nlm.nih.gov"
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:schemaLocation="http://www.ncbi.nlm.nih.gov ftp://ftp.ncbi.nlm.nih.gov/pubchem/specifications/pubchem.xsd">
等
私が望むのは、たとえば、PubChem ID を要求すると、その ID に対応する値が貼り付けられることです。これはネイティブ Java メソッドで実行できることがわかりましたが、これには HttpClient を使用する必要があります。ネイティブ Java では、次のように実行されます。
cid = 5282253
reader = new PCCompoundXMLReader(
new URL("http://pubchem.ncbi.nlm.nih.gov/summary/summary.cgi?cid=" + cid + "&disopt=SaveXML").newInputStream())
mol = reader.read(new NNMolecule())
println "CID: " + mol.getProperty("PubChem CID")
(注: このコードは Groovy で記述されていますが、いくつかの調整を行うと Java でも動作します)
だから、誰かが私を助けることができれば、それは素晴らしいことです:)