一、打印模板解析
/*
///cyberwin_offline_database_printtemp.js未来之窗打印模板解析技术 2024-09
*/
class CyberWin_Database_printtemp_KV {constructor() {this.data = {};this.line_count = 0 ;}解析(数据) {// this.data[key] = value;this.line_count = 0 ;this.data = {};const parser = new DOMParser();const xmlDoc = parser.parseFromString(数据, 'application/xml');console.log("未来之窗打印");// console.log(xmlDoc);const targetElement = xmlDoc.getElementsByTagName('Report')[0];if (targetElement) {// console.log(targetElement.textContent);}const rootElement = xmlDoc.getElementsByTagName('Report')[0];const childElements = rootElement.getElementsByTagName('ReportPage')[0];console.log("打印2=ReportPage");console.log(childElements);const childElements_页面 = childElements.childNodes;for (let i = 0; i < childElements_页面.length; i++) {console.log("打印3=ReportPage="+childElements_页面[i].nodeType+",Node.ELEMENT_NODE="+Node.ELEMENT_NODE);console.log(childElements_页面[i]);// console.log(childElements_页面[i].tagName + ': ' + childElements_页面[i].textContent);// if (childElements_页面[i].nodeType === Node.ELEMENT_NODE) {// if (childElements_页面[i].nodeType ===3) {if (childElements_页面[i] != "#text") {console.log("打印4="+childElements_页面[i].tagName );if("DataBand" == childElements_页面[i].tagName || "PageHeaderBand" == childElements_页面[i].tagName){const childElements_打印 = childElements_页面[i].childNodes;for (let j = 0; j < childElements_打印.length; j++) {console.log("打印明细");console.log("打印4 nodeType="+childElements_打印[j].nodeType);if (childElements_打印[j] == "#text") {console.log("打印5,明细不满足");continue;}if (childElements_打印[j].nodeType ==3) {console.log("删除空行");continue;}console.log(childElements_打印[j]);var Font = childElements_打印[j].getAttribute('Font');var CanGrow = childElements_打印[j].getAttribute('CanGrow');var content = childElements_打印[j].getAttribute('Text');//Leftvar x =childElements_打印[j].getAttribute('Left');var y =childElements_打印[j].getAttribute('Top');console.log(content);//Font="宋体, 9pt"var 字体分离array = Font.split(', ');var 字体_大小 =字体分离array[1].replace('pt','');if(x){}else{x=0;}if(y){}else{y=0;}if(CanGrow){CanGrow ="Y";}else{CanGrow = "N";}console.log(childElements_打印[j].tagName + ',Top: ' + Font +" left="+x);var 打印条目 ={type:'text',x:x,y:y,content:content,CanGrow:CanGrow,Font:Font,Fontsize:字体_大小};this.data[this.line_count] = 打印条目;this.line_count=this.line_count+1;}}}}return {count:this.line_count,data:this.data};}}
二、代码解释
在这神秘的修仙代码之境,有一神奇之“类”,名曰“CyberWin_Database_printtemp_KV”。
此“类”初建之时,犹如铸就一座空灵之库,其内部数据为空,且行数计数为零。
而后,有一神奇之法“解析”,能洞悉传入之神秘“数据”。
先是将一切归空重置,再以仙法“DOMParser”解析此“数据”,化为神秘之“xmlDoc”。
继而探寻其中特定元素,遍历诸多节点。
于层层节点之中,筛选甄别,获取各种属性与内容。
如同在仙阵之中,寻觅珍贵的灵能符文与奇妙法诀。
最后,将所得之“打印条目”精心收藏,行数计数递增,并以所得成果回传。
此过程犹如在仙法秘境中探索寻宝,步步精妙,玄机暗藏。
三、阿雪技术观
拥抱开源与共享,见证科技进步奇迹,畅享人类幸福时光!
让我们积极投身于技术共享的浪潮中,不仅仅是作为受益者,更要成为贡献者。无论是分享自己的代码、撰写技术博客,还是参与开源项目的维护和改进,每一个小小的举动都可能成为推动技术进步的巨大力量
扫码,可学习更多