Published
Edited
Oct 17, 2018
2 stars
Insert cell
Insert cell
Insert cell
xmlstring = Files.text(xmlfile)
Insert cell
xml = new DOMParser().parseFromString(xmlstring,"text/xml")
Insert cell
deliberations = {
var entries = [];
var files = xml.getElementsByTagName("file"); // assume no other file tags
for (var i=0, len=files.length; i<len; i++) {
if (files[i].children[1].tagName!="idno") throw new Error("Expecting idno: "+files[i].children[1])
var file = files[i].children[1].innerHTML;
var meetings = files[i].getElementsByTagName("meeting"); // assume no other meeting tags
for (var j=0, jlen=meetings.length; j<jlen; j++) {
if (meetings[j].children[1].tagName!="date") throw new Error("Expecting date: "+meetings[j].children[1])
var date = meetings[j].children[1].getAttribute("when"); // or innerText?
var deliberations = meetings[j].getElementsByTagName("deliberation"); // assume no other deliberation tag
for (var k=0, klen=deliberations.length; k<klen; k++) {
var deliberation = deliberations[k];
var entry = {
file: file,
meeting: date
};
var commune = deliberation.getElementsByTagName("commune");
entry.commune = commune.length > 0 ? commune[0].innerHTML : "";
var departement = deliberation.getElementsByTagName("departement");
entry.departement = departement.length>0 ? departement[0].innerHTML : "";
entry.numDepartement = departement.length>1 ? Number(departement[1].innerHTML) : -1;
var region = deliberation.getElementsByTagName("region");
entry.region = region.length>0 ? region[0].innerHTML : "";
entry.recommendation = deliberation.getElementsByTagName("recommendation")[0].innerHTML.trim();
entry.report = deliberation.getElementsByTagName("report")[0].innerHTML.trim();
entry.participants = [];
var participants = deliberation.getElementsByTagName("participant");
for (var l=0, llen=participants.length; l<llen; l++) {
console.warn(participants)
entry.participants.push({
"persName": participants[l].children[0].innerHTML,
"occupation": participants[l].children.length>1 ? participants[l].children[1].innerHTML : ""
})
}
var categories = deliberation.getElementsByTagName("category");
for (var l=0, llen=categories.length; l<llen; l++) {
var categoryType = categories[l].getAttribute("type");
var val = categories[l].innerHTML;
if (categoryType in entry) {
entry[categoryType].push(val)
} else {
entry[categoryType] = [val];
}
}
entries.push(entry);
}
}
}
return entries;
}
Insert cell
import {serialize} from "@palewire/saving-json"
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more