Clear Filters
Clear Filters

Pubmed API: What are systemID and publicID?

9 views (last 30 days)
The Matlab script I'd written in April 2016 to interface with the Pubmed API to automatically extract a bunch of gene info is no longer working. Something about needing both a SystemID and PublicID. Any ideas?
Simplified version of the code:
baseSearchURL = [''];
gene = 'pten';
termOptTOTAL = ['&term=', gene]; 
searchURL = [baseSearchURL,termOptTOTAL];
Full error message:
[Fatal Error] esearch.fcgi?db=pubmed&term=pten:1:50: White spaces are required between publicId and systemId.
Error using xmlread (line 97)
Java exception occurred:
org.xml.sax.SAXParseException; systemId:; lineNumber:
1; columnNumber: 50; White spaces are required between publicId and systemId.
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)

Answers (2)

Star Strider
Star Strider on 17 Dec 2016
I use PubMed frequently, but not to do what you’re doing. When I plugged ‘’ into the URL bar, I got ‘Page has moved here’ and was vectored to Entrez Programming Utilities Help. You might see if that page has the information you need.

Robert Snoeberger
Robert Snoeberger on 28 Jun 2017
It is possible to avoid XML by using webread and setting the retmode parameter to 'json'. JSON is easier to work with because webread will parse it and give you a struct.
>> result = webread('','db','pubmed','term','pten','retmode','json')
result =
struct with fields:
header: [1×1 struct]
esearchresult: [1×1 struct]
You can find some information about the retmode parameter in [1].

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!