init
parent
5563b6075b
commit
1ddf3df083
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"name": "@bytedo/alioss"
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
/**
|
||||||
|
* {alioss专用}
|
||||||
|
* @author yutent<yutent.io@gmail.com>
|
||||||
|
* @date 2023/02/15 16:16:08
|
||||||
|
*/
|
||||||
|
|
||||||
|
function parseDOM(dom) {
|
||||||
|
let dict = {}
|
||||||
|
if (dom.children.length) {
|
||||||
|
dict[dom.tagName] = [...dom.children].map(it => parseDOM(it))
|
||||||
|
} else {
|
||||||
|
dict[dom.tagName] = dom.textContent.trim()
|
||||||
|
}
|
||||||
|
return dict
|
||||||
|
}
|
||||||
|
|
||||||
|
function getKey(obj) {
|
||||||
|
return Object.keys(obj)[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
function fixDict(dict) {
|
||||||
|
let k = getKey(dict)
|
||||||
|
let newDict = {}
|
||||||
|
|
||||||
|
if (Array.isArray(dict[k])) {
|
||||||
|
for (let it of dict[k]) {
|
||||||
|
let _k = getKey(it)
|
||||||
|
let tmp = fixDict(it)
|
||||||
|
|
||||||
|
if (newDict[_k]) {
|
||||||
|
if (!Array.isArray(newDict[_k])) {
|
||||||
|
newDict[_k] = [{ ...newDict[_k] }]
|
||||||
|
}
|
||||||
|
newDict[_k].push(tmp)
|
||||||
|
} else {
|
||||||
|
newDict[_k] = tmp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (dict[k] === '') {
|
||||||
|
return ''
|
||||||
|
} else {
|
||||||
|
let v = +dict[k]
|
||||||
|
return v === v ? v : dict[k]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newDict
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function (xml) {
|
||||||
|
let parser = new DOMParser()
|
||||||
|
let doc = parser.parseFromString(xml, 'application/xml').children[0]
|
||||||
|
|
||||||
|
return fixDict(parseDOM(doc))
|
||||||
|
}
|
Loading…
Reference in New Issue