Skip to content

Commit 2111f22

Browse files
committed
switched to a new xml parser
1 parent 8a84541 commit 2111f22

5 files changed

Lines changed: 84 additions & 43 deletions

File tree

signaturenDruck/js/classes/DataFromSRU.js

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const { net } = require('electron')
2-
const parser = require('xml2json')
2+
const { XMLParser } = require("fast-xml-parser")
33

44
const Store = require('electron-store')
55
const C = require('./Config')
@@ -32,32 +32,40 @@ class DataFromSRU {
3232
*/
3333

3434
loadData (key, mode) {
35-
let queryPart1
36-
if (mode === 'PPN') {
37-
queryPart1 = config.get('SRU.QueryPart1')
38-
} else {
39-
queryPart1 = config.get('SRU.QueryPart1EPN')
40-
}
41-
const url = config.get('SRU.SRUAddress') + queryPart1 + key + config.get('SRU.QueryPart2')
42-
const request = net.request(url)
43-
let allData = ''
44-
let data = ''
45-
return new Promise(function (resolve, reject) {
46-
request.on('response', (response) => {
47-
response.on('data', (chunk) => {
48-
allData += chunk
49-
})
50-
response.on('end', () => {
51-
const options = {
52-
object: true
53-
}
54-
data = parser.toJson(allData, options)
55-
56-
resolve(data)
35+
try {
36+
let queryPart1
37+
if (mode === 'PPN') {
38+
queryPart1 = config.get('SRU.QueryPart1')
39+
} else {
40+
queryPart1 = config.get('SRU.QueryPart1EPN')
41+
}
42+
const url = config.get('SRU.SRUAddress') + queryPart1 + key + config.get('SRU.QueryPart2')
43+
const request = net.request(url)
44+
const options = {
45+
ignoreAttributes: false,
46+
attributeNamePrefix : ""
47+
}
48+
const parser = new XMLParser(options)
49+
let allData = ''
50+
let data = ''
51+
return new Promise(function (resolve, reject) {
52+
request.on('response', (response) => {
53+
response.on('data', (chunk) => {
54+
allData += chunk
55+
})
56+
response.on('error', (error) => {
57+
console.log('error', error)
58+
reject(error)
59+
})
60+
response.on('end', () => {
61+
resolve(parser.parse(allData))
62+
})
5763
})
64+
request.end()
5865
})
59-
request.end()
60-
})
66+
} catch (error) {
67+
throw(error)
68+
}
6169
}
6270
}
6371

signaturenDruck/js/classes/ShelfmarksFromSRUData.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -101,12 +101,12 @@ function getOccurrence (object, barcode) {
101101
if (o.subfield.length > 1) {
102102
// return the subield entry with the matching barcode
103103
return _.forEach(o.subfield, function (data) {
104-
if (data.$t === barcode) {
104+
if (data['#text'] === barcode) {
105105
return o
106106
}
107107
})
108108
} else { // if there is just one subfield entry
109-
if (o.subfield.$t === barcode) {
109+
if (o.subfield['#text'] === barcode) {
110110
return o
111111
}
112112
}
@@ -125,7 +125,7 @@ function getOccurrence (object, barcode) {
125125
function getPPN (object) {
126126
const data = _.find(object['zs:searchRetrieveResponse']['zs:records']['zs:record']['zs:recordData'].record.datafield, { tag: '003@' })
127127
if (data !== undefined) {
128-
return data.subfield.$t
128+
return data.subfield['#text']
129129
} else {
130130
return ''
131131
}
@@ -134,7 +134,7 @@ function getPPN (object) {
134134
function getEPN (object) {
135135
const data = _.find(object['zs:searchRetrieveResponse']['zs:records']['zs:record']['zs:recordData'].record.datafield, { tag: '203@' })
136136
if (data !== undefined) {
137-
return data.subfield.$t
137+
return data.subfield['#text']
138138
} else {
139139
return ''
140140
}
@@ -144,7 +144,7 @@ function getDate (object, occ) {
144144
const parent = _.find(object['zs:searchRetrieveResponse']['zs:records']['zs:record']['zs:recordData'].record.datafield, { tag: '201B', occurrence: occ })
145145
const data = _.find(parent.subfield, { code: '0' })
146146
if (data !== undefined) {
147-
return data.$t
147+
return data['#text']
148148
} else {
149149
return ''
150150
}
@@ -154,7 +154,7 @@ function getTxt (object, occ) {
154154
const parent = _.find(object['zs:searchRetrieveResponse']['zs:records']['zs:record']['zs:recordData'].record.datafield, { tag: '209A', occurrence: occ })
155155
const data = _.find(parent.subfield, { code: 'a' })
156156
if (data !== undefined) {
157-
return data.$t
157+
return data['#text']
158158
} else {
159159
return ''
160160
}
@@ -173,7 +173,7 @@ function getLocation (object, occ) {
173173
const parent = _.find(object['zs:searchRetrieveResponse']['zs:records']['zs:record']['zs:recordData'].record.datafield, { tag: '209A', occurrence: occ })
174174
const data = _.find(parent.subfield, { code: 'f' })
175175
if (data !== undefined) {
176-
return data.$t
176+
return data['#text']
177177
} else {
178178
return ''
179179
}
@@ -183,7 +183,7 @@ function getLoanIndication (object, occ) {
183183
const parent = _.find(object['zs:searchRetrieveResponse']['zs:records']['zs:record']['zs:recordData'].record.datafield, { tag: '209A', occurrence: occ })
184184
const data = _.find(parent.subfield, { code: 'd' })
185185
if (data !== undefined) {
186-
return data.$t
186+
return data['#text']
187187
} else {
188188
return ''
189189
}

signaturenDruck/main.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ const configNew = {
5353
SRU: {
5454
useSRU: false,
5555
printImmediately: false,
56-
SRUAddress: 'http://sru.k10plus.de/opac-de-27',
56+
SRUAddress: 'https://sru.k10plus.de/opac-de-27',
5757
QueryPart1: '?version=1.1&operation=searchRetrieve&query=pica.bar=',
5858
QueryPart1EPN: '?version=1.1&operation=searchRetrieve&query=pica.epn=',
5959
QueryPart2: '&maximumRecords=1&recordSchema=picaxml'
@@ -215,9 +215,15 @@ ipcMain.on('saveManualSignatures', function (event, data) {
215215
// listens on loadFromSRU, invokes the loadAndAddFromSRU function with the provided barcode
216216
ipcMain.on('loadFromSRU', function (event, key, mode) {
217217
if (key !== '') {
218-
sruData.loadData(key, mode).then(function (data) {
219-
mainWindow.webContents.send('addSRUdata', data, key, mode)
220-
})
218+
try {
219+
sruData.loadData(key, mode).then(function (data) {
220+
mainWindow.webContents.send('addSRUdata', data, key, mode)
221+
})
222+
} catch (err) {
223+
console.log('error occured')
224+
console.log(err)
225+
}
226+
221227
}
222228
})
223229

signaturenDruck/package-lock.json

Lines changed: 31 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

signaturenDruck/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
{
22
"name": "SignaturenDruck",
3-
"version": "1.3.18",
3+
"version": "1.3.19",
44
"description": "SignaturenDruck der ThULB",
55
"main": "main.js",
66
"dependencies": {
77
"electron-context-menu": "^3.1.1",
88
"electron-squirrel-startup": "^1.0.0",
99
"electron-store": "^8.0.1",
10+
"fast-xml-parser": "^4.3.5",
1011
"lodash": "^4.17.21",
1112
"moment": "^2.29.1",
1213
"pdf-to-printer": "^5.0.0",
1314
"serialijse": "^0.3.0",
1415
"sweetalert2": "^11.1.9",
1516
"system-font-families": "^0.4.1",
1617
"username": "^5.1.0",
17-
"xml2json": "^0.12.0",
1818
"xregexp": "^5.1.0"
1919
},
2020
"devDependencies": {

0 commit comments

Comments
 (0)