diff --git a/package-lock.json b/package-lock.json index 589866b..772daee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "qrcode": "^1.5.3", "vue": "^3.4.15", "vue-router": "^4.2.5", + "x2js": "^3.4.4", "xml2js": "^0.6.2" }, "devDependencies": { @@ -703,6 +704,14 @@ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.19.tgz", "integrity": "sha512-/KliRRHMF6LoiThEy+4c1Z4KB/gbPrGjWwJR+crg2otgrf/egKzRaCPvJ51S5oetgsgXLfc4Rm5ZgrKHZrtMSw==" }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -1268,6 +1277,14 @@ "node": ">=8" } }, + "node_modules/x2js": { + "version": "3.4.4", + "resolved": "https://registry.npmmirror.com/x2js/-/x2js-3.4.4.tgz", + "integrity": "sha512-yG/ThaBCgnsa3aoMPAe7QwDpcyU4D70hjXC4Y1lZSfD/Tgd0MpE19FnZZRAjekryw0c8cffpOt9zsPEiqktO6Q==", + "dependencies": { + "@xmldom/xmldom": "^0.8.3" + } + }, "node_modules/xml2js": { "version": "0.6.2", "resolved": "https://registry.npmmirror.com/xml2js/-/xml2js-0.6.2.tgz", @@ -1711,6 +1728,11 @@ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.19.tgz", "integrity": "sha512-/KliRRHMF6LoiThEy+4c1Z4KB/gbPrGjWwJR+crg2otgrf/egKzRaCPvJ51S5oetgsgXLfc4Rm5ZgrKHZrtMSw==" }, + "@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==" + }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -2101,6 +2123,14 @@ "strip-ansi": "^6.0.0" } }, + "x2js": { + "version": "3.4.4", + "resolved": "https://registry.npmmirror.com/x2js/-/x2js-3.4.4.tgz", + "integrity": "sha512-yG/ThaBCgnsa3aoMPAe7QwDpcyU4D70hjXC4Y1lZSfD/Tgd0MpE19FnZZRAjekryw0c8cffpOt9zsPEiqktO6Q==", + "requires": { + "@xmldom/xmldom": "^0.8.3" + } + }, "xml2js": { "version": "0.6.2", "resolved": "https://registry.npmmirror.com/xml2js/-/xml2js-0.6.2.tgz", diff --git a/package.json b/package.json index 9921c26..aaa04b8 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "qrcode": "^1.5.3", "vue": "^3.4.15", "vue-router": "^4.2.5", + "x2js": "^3.4.4", "xml2js": "^0.6.2" }, "devDependencies": { diff --git a/src/main.js b/src/main.js index 4e94d0c..371af04 100644 --- a/src/main.js +++ b/src/main.js @@ -3,7 +3,6 @@ import App from './App.vue' import router from './router' - const app = createApp(App) diff --git a/src/router/index.js b/src/router/index.js index 778ec01..1b615fd 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -23,6 +23,11 @@ const router = createRouter({ path: '/test', name: 'test', component: () => import('../views/test.vue') + }, + { + path: '/xmltojson', + name: 'xmltojson', + component: () => import('../views/xmltojson.vue') } ] }) diff --git a/src/utils/xmlToJson.js b/src/utils/xmlToJson.js deleted file mode 100644 index 0629624..0000000 --- a/src/utils/xmlToJson.js +++ /dev/null @@ -1,43 +0,0 @@ -// 递归将 XML 转换为 JSON -function convertToJson(xml) { - let obj = {}; // 将 obj 声明为可变的变量 - - if (xml.nodeType === 1) { // element - // 处理属性 - if (xml.attributes.length > 0) { - obj['@attributes'] = {}; - for (let j = 0; j < xml.attributes.length; j++) { - const attribute = xml.attributes.item(j); - obj['@attributes'][attribute.nodeName] = attribute.nodeValue; - } - } - } else if (xml.nodeType === 3) { // text - obj = xml.nodeValue; - } - - // 处理子节点 - if (xml.hasChildNodes()) { - for (let i = 0; i < xml.childNodes.length; i++) { - const item = xml.childNodes.item(i); - const nodeName = item.nodeName; - if (typeof obj[nodeName] === 'undefined') { - obj[nodeName] = convertToJson(item); - } else { - if (typeof obj[nodeName].push === 'undefined') { - const old = obj[nodeName]; - obj[nodeName] = []; - obj[nodeName].push(old); - } - obj[nodeName].push(convertToJson(item)); - } - } - } - return obj; - } - - export function xmlToJson(xml) { - const parser = new DOMParser(); - const xmlDoc = parser.parseFromString(xml, 'text/xml'); - return convertToJson(xmlDoc); - } - \ No newline at end of file diff --git a/src/views/show.vue b/src/views/show.vue index 4e1916f..040dc2e 100644 --- a/src/views/show.vue +++ b/src/views/show.vue @@ -1,10 +1,8 @@