ucenter-client
Version:
A full-featured UCenter client for Node.js.
50 lines (48 loc) • 1.53 kB
JavaScript
const convert = require('xml-js');
const xml =
`
<root>
<item id="1">
<item id="appid"><![CDATA[1]]></item>
<item id="type"><![CDATA[OTHER]]></item>
<item id="name"><![CDATA[测试]]></item>
<item id="url"><![CDATA[http://127.0.0.1:7001]]></item>
<item id="tagtemplates">
<item id="template"><![CDATA[]]></item>
</item>
<item id="viewprourl"><![CDATA[]]></item>
<item id="synlogin"><![CDATA[1]]></item>
</item>
</root>`;
const result1 = convert.xml2js(xml, {compact: true});
console.log(convert.xml2json(xml, {compact: true}));
function analyzeNode(node) {
if (node.root) {
return analyzeNode(node.root);
} else if (node.item) {
if (Array.isArray(node.item)) {
if (/^\d+$/g.test(node.item[0]._attributes.id)) {
return node.item.map(v => {
return analyzeNode(v);
});
} else {
const data = {};
node.item.forEach(v => {
data[v._attributes.id] = analyzeNode(v);
});
return data;
}
} else {
const data = {};
data[node.item._attributes.id] = analyzeNode(node.item);
return data;
}
} else if (node._cdata) {
return node._cdata;
} else if (node._text) {
return node._text;
} else {
return null;
}
}
console.log(analyzeNode(result1));