Skip to content

Instantly share code, notes, and snippets.

@geobabbler
Created March 25, 2015 13:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save geobabbler/37f7d16aade414bed102 to your computer and use it in GitHub Desktop.
Save geobabbler/37f7d16aade414bed102 to your computer and use it in GitHub Desktop.
Generates metadata document containing elements required by data.gov
var fs = require('fs');
function writeMetadata(Origin, Pubdate, Title, Abstract, Westbc, Eastbc, Northbc, Southbc, Addrtype, State){
var XMLWriter = require('xml-writer');
xw = new XMLWriter(true);
xw.startDocument();
var root = xw.startElement('metadata');
root.writeAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
root.writeAttribute('xsi:noNamespaceSchemaLocation','http://www.fgdc.gov/metadata/fgdc-std-001-1998.xsd');
var idinfo = root.startElement('idinfo');
var citation = idinfo.startElement('citation');
var citeinfo = citation.startElement('citeinfo');
var origin = citeinfo.startElement('origin').text(Origin).endElement();
var pubdate = citeinfo.startElement('pubdate').text(Pubdate).endElement();
var title = citeinfo.startElement('title').text(Title).endElement();
citeinfo.endElement();
citation.endElement();
var descript = idinfo.startElement('descript');
var abstract = descript.startElement('abstract').text(Abstract).endElement();
descript.endElement();
var spdom = idinfo.startElement('spdom');
var bounding = spdom.startElement('bounding');
var westbc = bounding.startElement('westbc').text(Westbc).endElement();
var eastbc = bounding.startElement('eastbc').text(Eastbc).endElement();
var northbc = bounding.startElement('northbc').text(Northbc).endElement();
var southbc = bounding.startElement('southbc').text(Southbc).endElement();
bounding.endElement();
spdom.endElement();
idinfo.endElement();
var metainfo = root.startElement('metainfo');
var metc = metainfo.startElement('metc');
var cntinfo = metc.startElement('cntinfo');
var cntaddr = cntinfo.startElement('cntaddr');
var addrtype = cntaddr.startElement('addrtype').text(Addrtype).endElement();
var state = cntaddr.startElement('state').text(State).endElement();
cntaddr.endElement();
cntinfo.endElement();
metc.endElement();
metainfo.endElement();
//r.text('Some content');
xw.endDocument();
return xw;
}
var s = writeMetadata('Earth Data Analysis Center', '20081021', 'New Mexico State Forestry Districts', 'test abstract', -109.051338201043,
-102.998901361614, 37.001747134987, 31.3308715831633, 'mailing and physical address', 'NM');
fs.writeFile("foo2.xml", s, function(err) {
if(err) {
return console.log(err);
}
var validator = require('./validator')
var val = new validator();
var msgs = val.validate('foo2.xml');
console.log(msgs);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment